2017-04-24 11 views
0

は、だから私は持っているインスタンスに対して言う:MySQL:1つの列が一致するすべての行を削除する方法、ただし1つは「-1」に設定されていますか?

+-------------+-----------+-------------+--------+ 
| module  | module_id | document_no | status | 
+-------------+-----------+-------------+--------+ 
| demographic |  -1 |  1237 | A  | 
| demographic |  475 |  1237 | A  | 
+-------------+-----------+-------------+--------+ 

は「一部はの「-1」だけMODULE_IDを持っており、いくつかのではないMODULE_IDを持ってdocument_noのインスタンスの数千人が、ある想像-1だけでなく、 -1」となる。そのdocument_noの唯一のmodule_idでない場合、どのようにしてmodule_idが "-1"の行をすべて削除できますか?

+0

「保有数(*)> 1」 – Hackerman

答えて

3

別のmodule_idを持つすべてのドキュメント番号を返すサブクエリでテーブルを結合します。

DELETE t1 
FROM yourTable AS t1 
JOIN (SELECT DISTINCT document_no 
     FROM yourTable 
     WHERE module_id != -1) AS t2 
ON t1.document_no = t2.document_no 
WHERE t1.module_id = -1 
+0

これは完全に機能しました。ありがとう! –

関連する問題