MySQL Drupal テーブルの 1 つでクリーンアップを実行して、格納されている重複した値を削除したいと考えています。構造は次のとおりです。
NID VID DELTA FIELD_VALUE
100 100 0 foobar
100 100 1 foobar
101 101 0 barbar
101 101 1 barbar
102 102 0 foofoo
DELTA
私の目標は、同じ行がNID, VID, FIELD_VALUE
小さい s で存在する場合、 sが大きい行を削除することDELTA
です。
私の最初の試みは次のクエリでした:
delete from mytable a where a.delta=1 and 1=(select count(nid) from mytable b where b.nid=a.nid and b.vid=a.vid and b.delta=0 and b.field_value=a.field_value)
残念ながら、DB は言う: (MySQL 5.1.65-cll)
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a where a.delta=1 and 1 = (select count from `field_value` b where' at line 1
これは私にはあまり役に立ちません。
アップデート:
削除された回答によると、MySQL は削除ステートメントでエイリアスをサポートしていませんが、エイリアスを削除しても解決しませんでした。サブクエリは問題ありません。個別にチェックされています。