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

セーフモードでのmysqlの削除

    グーグルで回ると、人気のある答えは「セーフモードをオフにするだけ」

    SET SQL_SAFE_UPDATES = 0;
    DELETE FROM instructor WHERE salary BETWEEN 13000 AND 15000;
    SET SQL_SAFE_UPDATES = 1;
    

    正直なところ、セーフモードで走る習慣をつけたことはありません。それでも、問題が発生するたびにデータベース構成を変更する必要があると想定しているため、この回答に完全に満足しているわけではありません。

    したがって、2番目のクエリはマークに近づきますが、別の問題が発生します。MySQLはサブクエリにいくつかの制限を適用し、そのうちの1つは、サブクエリでテーブルから選択している間はテーブルを変更できないことです。

    MySQLマニュアルからの引用、サブクエリの制限

    その最後のビットがあなたの答えです。一時テーブルでターゲットIDを選択し、そのテーブルのIDを参照して削除します。

    DELETE FROM instructor WHERE id IN (
      SELECT temp.id FROM (
        SELECT id FROM instructor WHERE salary BETWEEN 13000 AND 15000
      ) AS temp
    );
    

    SQLFiddleデモ



    1. SQL:行を検索し、一致する列の数に従って並べ替えますか?

    2. 'xml'をSQLServerにインポートします

    3. 国際文字を使用すると、mysqlクエリから二重の結果が得られます。つまり、Å/Ä=A&Ö=O、

    4. 条件文を使用したMySQLクエリ?