sql >> Database >  >> RDS >> Mysql

ALS NIET BESTAAN WERKT NIET!

MySQL staat if . niet toe logica, tenzij u zich in een programmeerblok bevindt (opgeslagen procedure, trigger of functie).

Gelukkig kun je hetzelfde doen met WHERE logica:

INSERT INTO user 
    SELECT 'Rutvij', 'python', 25
    FROM DUAL
    WHERE NOT EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python')
    UNION ALL
    SELECT 'Kanzaria', 'python', 25
    FROM DUAL
    WHERE EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python');

MySQL zou de SELECT . moeten verwerken voor de INSERT , dus er mag maar één rij worden ingevoegd.

Of u kunt dit doen als twee INSERT s maar in omgekeerde volgorde:

INSERT INTO user 
    SELECT 'Kanzaria', 'python', 25
    FROM DUAL
    WHERE EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python');

INSERT INTO user 
    SELECT 'Rutvij', 'python', 25
    FROM DUAL
    WHERE NOT EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python');


  1. SQL Server Update Trigger, Alleen gewijzigde velden ophalen

  2. update meerdere records in meerdere geneste tabellen in oracle

  3. Willekeurige rijen selecteren

  4. MySQL-gebruiker opgegeven als definitie bestaat niet