0

データベースから列を持つ複数の行を削除するにはどうすればよいですか? db に次のデータ (id、list_name、user) があり、list_name に次のような値があるとします。

 Owner-aaa
 coowner-aaa
 owner-aaa
 subowner-aaa

「Owner-aaa」と「owner-aaa」が重複している行を削除する方法を教えてください。

ここで、このクエリに何かを追加できますか:

delete from <table_name> where list_name = 'owner-aaa'

しかし、それは小文字のリストのみを削除します。小文字と大文字の重複をチェックして両方を削除する一般的なものが必要ですか?

前もってありがとうエイミー

4

5 に答える 5

1
DELETE FROM mytable WHERE LOWER(listname) IN
(SELECT LOWER(listname) FROM mytable 
GROUP BY LOWER(listname)
HAVING COUNT(*) > 1)
于 2013-06-28T14:00:57.797 に答える
1
delete from tableName where LOWER(list_name) = 'owner-aaa'
于 2013-06-28T13:59:26.557 に答える
0
DELETE a
FROM list a
INNER JOIN list b ON LOWER(a.list_name)=LOWER(b.list_name)
WHERE a.id <> b.id
于 2013-06-28T14:00:06.483 に答える
0

あなたの質問から、重複が発生したすべての行を削除するか、1つ残して真の重複のみを削除するかは完全にはわかりません。だからここにそれぞれのショットがあります:

真の重複のみを削除するには:

DELETE FROM MyTable WHERE id IN
(
   SELECT T1.id 
     FROM MyTable T1
          INNER JOIN MyTable T2
             ON UPPER(T1.list_name) = UPPER(T2.list_name)
            AND T2.id <> T1.id
            AND (T1.id <> (SELECT MAX(id) FROM MyTable WHERE UPPER(list_name) = UPPER(T1.list_name))
) DUPS

これは、id フィールドが各レコードに固有であることを前提としています

重複があるすべてのレコードを削除するには、サブクエリで 2 つの「AND」句を削除します。

于 2013-06-28T14:15:02.073 に答える
0

Meaby では、LOWER/UPPER SQL 関数を使用できます。

しかし、あなたのモデルが正しいと確信していますか? そのような名前リストを持つことは本当に奇妙に思えます。これは、ID と NAME フィールドを持つ別のテーブル NAMES である必要があります。1対Nの関係です。

于 2013-06-28T14:11:22.120 に答える