1

私が走れば

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

出力には、somecolumnに複数回出現する の値が含まれsometableます。

しかし、これらの繰り返し値が表示される(またはその一部)を見たいと思っています。たとえば、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
...

どうすればこれを達成できますか?

4

2 に答える 2

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
于 2013-04-17T20:19:08.327 に答える