2012-02-02 5 views
0

で重複するレコードを探すすべての人は、おそらく私はこのURLで以前に従っ質問http://senta.la/bd08MySQLの2

だから私はちょうど慎重にそれらを読んでいると私は私の問題ではまだだが読むことをお勧めします。この状況は、上のリンクで言及された質問と同じではありません。私は(*印)が発見するレコード以下

参照:

ID   COURSE  OTHERCOLUMN_X  OTHERCOLUMN_Y  OTHERCOLUMN_Z 
123  2111   ...    ...     ... 
*5644  2245   ...    ...     ... 
*5644  2245   ...    ...     ... 
2121  2131   ...    ...     ... 

以前プログラマ、このような状況を防ぐために、堆肥キーを作るためにUNIQUEインデックスを使用して考えていません。私は知っている...良いニュースは、プログラマーはもはやプログラマーではないということです。その私が望む結果を提供していませ

この古典的なクエリ...

SELECT id, course FROM mytable 
GROUP BY id 
HAVING COUNT(id) > 1 

私はこれだけの結果を見たい:私はちょうどクエリが、私の多くを試してみましたよ

ID   COURSE  OTHERCOLUMN_X  OTHERCOLUMN_Y  OTHERCOLUMN_Z 
*5644  2245   ...    ...     ... 
*5644  2245   ...    ...     ... 

上記の結果を示すものを見つけることができます。

:(

+0

Whをat "MySQL 2"ですか? –

答えて

1

重複idで行を見つけるには:

SELECT a.* 
FROM mytable AS a 
    JOIN 
    (SELECT id 
     FROM mytable 
     GROUP BY id 
     HAVING COUNT(*) > 1 
    ) AS b 
    ON b.id = a.id 

重複(id, course)で行を見つけるには:

SELECT a.* 
FROM mytable AS a 
    JOIN 
    (SELECT id, course 
     FROM mytable 
     GROUP BY id, course 
     HAVING COUNT(*) > 1 
    ) AS b 
    ON b.id = a.id 
    AND b.course = a.course 
0

多分このような何か:

SELECT id, course 
FROM mytable 
WHERE id in (SELECT id from mytable GROUP BY id HAVING COUNT(id) > 1) 
1

まあ

SELECT id, course FROM mytable GROUP BY id HAVING COUNT(id) > 1 

与えられたが、一つの方法は、元のテーブルに

よう

何かに参加することで動作します

Select myTable.ID,myTable.Course,... From myTable 
inner join(SELECT id, course FROM mytable GROUP BY id HAVING COUNT(id) > 1) duplicates 
On duplicates.id = mytable.id and duplicates.course = mytable.course 

多分

1

次を使用しよう:

SELECT id, 
COUNT(id) AS NumOccurrences 
FROM YourTableName 
GROUP BY id 
HAVING (COUNT(id) > 1)