2013-04-17 76 views
1

如果我運行如何顯示多個點擊的行?

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

產量將出現較sometable一次更具有值somecolumn

但我想看到(或其中的一部分),這些重複的值出現。例如,如果foobar是其他列處於感興趣的名字從sometable,輸出的前幾行可能看起來像

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 
... 

我怎樣才能做到這一點?

+0

您使用哪種rdbms? – bonsvr

+0

postgres'''''''''' – kjo

回答

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 
0

您需要將這些列添加到選擇以及分組

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

這不是你想要的。 S /他想知道其他列的值只有某些列被重複時 – Lamak

+0

我明白你的意思了..沒有以最初的方式閱讀這個問題.. –