繁体   English   中英

SQL 查询仅获取另一列中只有 1 个值的行

[英]SQL Query to get only those rows with only 1 value in another column

我有一张这样的桌子:

样品表

我需要一个查询来仅返回那些只有 State=21 的 ProjectID。 即我只想要 ProjectID 2 和 5。

我不想要 ProjectID 为 1、3、4 和 6 的记录,因为在这种情况下,state 也等于其他数字

推理就像

  • 在子选择中,select 所有具有 state = 21 的 ProjectID
  • 在外部 select 中,使用HAVING子句仅保留仅具有 state = 21 的那些 ProjectID

SQL 声明

SELECT  ProjectID
FROM    table t1
        INNER JOIN (
          SELECT  ProjectID
          FROM    table
          WHERE   state = 21
        ) t2 ON t2.ProjectID = t1.ProjectID
GROUP BY
        ProjectID
HAVING  COUNT(*) = 1        

Select 具有单个 state 值的所有项目,顺便说一下,它(“值”)等于指定的值:

SELECT   ProjectID
FROM     atable
GROUP BY ProjectID
HAVING   COUNT(*) = 1
   AND   MAX(State) = @State

您还可以使用MINSUMAVG来检查State的值,效果相同(因为它应该是唯一的值)。

select ProjectID,count(State) from table group by ProjectID having count(state)=1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM