如何显示多次点击的行?

时间:2013-04-17 20:15:55

标签: sql

如果我跑

SELECT somecolumn FROM sometable GROUP BY somecolumn HAVING count(*) > 1;

输出的somecolumn值会在sometable中出现多次。

但我希望看到出现这些重复值的(或其中的一部分)。例如,如果foobarsometable中感兴趣的其他列的名称,则输出的前几行可能类似于

 somecolumn |  foo   |  bar
-------------------------------
 123        | foo_1  | bar_2
 123        | foo_3  | bar_5
 123        | foo_7  | bar_11
 234        | foo_13 | bar_17
 234        | foo_19 | bar_23
...

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

对于数据库无关的解决方案,您可以这样做:

SELECT *
FROM sometable S
WHERE somecolumn IN (   SELECT somecolumn 
                        FROM sometable 
                        GROUP BY somecolumn 
                        HAVING count(*) > 1)

对于SQL Server 2005+,您可以这样做:

;WITH CTE AS
(
    SELECT  *,
            N = COUNT(*) OVER(PARTITION BY somecolumn)
    FROM sometable
)
SELECT *
FROM CTE
WHERE N > 1

答案 1 :(得分:0)

您需要将这些列添加到选择以及分组

SELECT 
    somecolumn, 
    foo, 
    bar 
FROM 
    sometable 
GROUP BY 
    somecolumn, 
    foo, 
    bar 
HAVING count(*) > 1;