1. ホーム
  2. sql

[解決済み] MySQLでselectから削除する方法は?

2023-02-20 22:36:02

質問

このコードは MySQL 5.0 では動作しません。

DELETE FROM posts where id=(SELECT id FROM posts GROUP BY id  HAVING ( COUNT(id) > 1 ))

ユニークIDを持たないカラムを削除したい。私は、ほとんどの場合、その唯一のIDを追加します(私は構文で試してみましたが、それは同様に動作しません)。

どのように解決するには?

SELECT (サブ)クエリが結果を返す セット . そのため IN ではなく = でなく、あなたの WHERE 節に追加します。

さらに、以下に示すように この答え に示すように、同じクエリ内のサブクエリから同じテーブルを変更することはできません。しかし、次のいずれかを行うことができます。 SELECT では DELETE を別々のクエリで実行するか、別のサブクエリをネストして内部のサブクエリの結果をエイリアス化します (かなりやっかいに見えますが、)。

DELETE FROM posts WHERE id IN (
    SELECT * FROM (
        SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
    ) AS p
)

または、結合を使用する を使うこともできます。 .