sql >> データベース >  >> RDS >> Mysql

mysqlでカウントが1より大きい重複行を削除します

    MySQLでは、削除するテーブルから同時に選択することはできません。しかし、一時テーブルを使用すると、この問題を克服できます

    DELETE FROM `users_acl` 
    WHERE userID IN
    (
        SELECT * FROM
        (
           SELECT userID
           FROM `users_acl`
           GROUP BY userID 
           HAVING COUNT(userID) > 1
           AND SUM(`acl` = 4) > 0
       ) tmp
    );
    

    またはjoinを使用します 代わりに

    DELETE u
    FROM `users_acl` u
    JOIN 
    (
        SELECT userID
        FROM `users_acl`
        GROUP BY userID 
        HAVING COUNT(userID) > 1
        AND SUM(`acl` = 4) > 0
    ) tmp on tmp.userID = u.userID
    


    1. 主キーにnull値を含めることができないのはなぜですか?

    2. SQL Serverエラー213:列名または指定された値の数がテーブル定義と一致しません。

    3. Oracle Live SQL

    4. ダイナミックピボットMySQL