sql >> Databáze >  >> RDS >> Mysql

mysql odstranit v nouzovém režimu

Při hledání na Googlu se zdá, že populární odpověď je "stačí vypnout nouzový režim" :

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

Pokud mám být upřímný, nemůžu říct, že bych si někdy vytvořil zvyk běžet v nouzovém režimu. Přesto mi tato odpověď není úplně příjemná, protože pouze předpokládá, že byste měli změnit konfiguraci databáze pokaždé, když narazíte na problém.

Takže váš druhý dotaz je blíže ke značce, ale naráží na jiný problém:MySQL aplikuje několik omezení na poddotazy a jedním z nich je, že nemůžete upravovat tabulku, když z ní vybíráte v poddotazu.

Citace z manuálu MySQL, Omezení poddotazů :

Ten poslední kousek je vaše odpověď. Vyberte cílová ID v dočasné tabulce a poté odstraňte odkazem na ID v této tabulce:

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

Ukázka SQLFiddle .



  1. Přečtěte si e-mail imap php

  2. Úvod do pomalu se měnících rozměrů (SCD)

  3. Funkce CAST() v Oracle

  4. Tipy pro monitorování replikace MariaDB pomocí ClusterControl