基于一个值获取特定行的 SQL 查询
Posted
技术标签:
【中文标题】基于一个值获取特定行的 SQL 查询【英文标题】:SQL query to get specific rows based on one value 【发布时间】:2014-01-23 23:44:29 【问题描述】:ID Place Name Type Count
--------------------------------------------------------------------------------
7718 | UK1 | Lemuis | ERIS TELECOM | 0
7713 | UK1 | Astika LLC | VERIDIAN | 34
7712 | UK1 | Angel Telecom AG | VIACLOUD | 34
7710 | UK1 | DDC S.r.L | ALPHA UK | 25
7718 | UK1 | Customers | WERTS | 0
基本上我有一个变量,我想将该变量与'Type'
列进行比较。如果变量与类型匹配,那么我想返回与变量 ID 具有相同 ID 的所有行。
例如,我的变量是'ERIS TELECOM'
,我需要检索'ERIS TELECOM'
的ID,即7718
。然后我在表中搜索具有ID 7718
的行。
我想要的输出应该是:
表名:FullResults
ID Place Name Type Count
--------------------------------------------------------------------------------
7718 | UK1 | Lemuis | ERIS TELECOM | 0
7718 | UK1 | Customers | WERTS | 0
是否有可以执行此操作的查询?
【问题讨论】:
【参考方案1】:您可以为此创建一个存储过程,您将在执行存储过程时传递一个变量。
create proc dbname.dbo.usp_get_date_from_type_value
(
@type_value varchar(50)
)
as
begin
select ID, Place, Name, Type, Count
from dbname..table
where ID in (select ID from dbname..table where type = @type_value)
end
然后您可以运行以下语句。
Exec dbname.dbo.usp_get_date_from_type_value @type_value = 'ERIS TELECOM'
【讨论】:
【参考方案2】:这样的事情应该可以解决问题,返回所有具有匹配类型的 ID 的所有数据。
SELECT *
FROM Table
WHERE ID
IN (SELECT ID from Table where Type = 'ERIS TELECOM')
【讨论】:
【参考方案3】:SELECT *
FROM FullResults
WHERE ID = (SELECT ID
FROM FullResults
WHERE Type= @variable);
我猜会是这样吗?
【讨论】:
以上是关于基于一个值获取特定行的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
如何编写oracle SQL查询以特定顺序获取匹配和不匹配的行对(基于键列)