基于一个值获取特定行的 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查询以特定顺序获取匹配和不匹配的行对(基于键列)

基于同一表上的另一个查询过滤记录的 SQL

如何从 Pentaho-Kettle 中基于动态选择的 sql 查询中获取结果集?

基于日期时间值的相同表上的高效sql子查询

SQL BigQuery:选择基于时间的查询

获取特定子记录的 SQL 查询