【问题标题】:How to write the query that returns records where some column value appears more than once?如何编写返回某些列值多次出现的记录的查询?
【发布时间】:2014-10-27 17:41:10
【问题描述】:

我有一个包含状态列的表。我需要编写查询来返回某些列值多次出现的记录?

类似这样的:

select * from Table1
where COUNT(StatusID = 6) > 1

【问题讨论】:

  • 这毫无意义。当然,每条记录一列只出现一次。那么你真正想要的是什么?具有在表中多次出现的状态的所有行?状态 6 的所有行,前提是表中存在多个状态 6 的条目?还是每行有几个状态列?
  • StatusID 列中的值 6 可以出现多次。我需要获取所有符合该条件的记录。
  • 条件是什么?表中不仅有一条记录的状态为 6?或者只是记录本身的状态为 6?或者还有什么?
  • 条件是——获取所有StatusID列中出现6次以上的记录。
  • 或者你是说状态字段包含一个像'1,1,2,6,6'这样的字符串并且你想要那些6在列表中多次出现的字符串?

标签: sql sql-server count


【解决方案1】:

您可以编写如下查询:

SELECT *
FROM Table1
WHERE StatusID IN 
(
     SELECT StatusID
     FROM (SELECT StatusID,Count(*) AS cnt FROM Table1 WHERE StatusID=6 
     GROUP BY StatusID      
     HAVING COUNT(*) > 1) AS tbl
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多