sql >> Database teknologi >  >> RDS >> Mysql

HVIS IKKE FINNES VIRKER IKKE

MySQL tillader ikke if logik, medmindre du er i en programmeringsblok (lagret procedure, trigger eller funktion).

Heldigvis kan du gøre det samme med WHERE logik:

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 skal behandle SELECT før INSERT , så der skal kun indsættes én række.

Eller du kan gøre dette som to INSERT s men i modsat rækkefølge:

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. H2 opdatering med join

  2. Vores Microsoft Ignite-sessionsoptagelse er nu tilgængelig til visning!

  3. Gruppering af poster fra while loop | PHP

  4. UTF-8 problemer med tinymce?