Mysql
 sql >> Datenbank >  >> RDS >> Mysql

WENN NICHT VORHANDEN FUNKTIONIERT NICHT

MySQL erlaubt if nicht Logik, es sei denn, Sie befinden sich in einem Programmierblock (gespeicherte Prozedur, Trigger oder Funktion).

Glücklicherweise können Sie dasselbe mit WHERE tun 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 sollte den SELECT verarbeiten vor dem INSERT , also sollte nur eine Zeile eingefügt werden.

Oder Sie können dies als zwei INSERT tun s, aber in umgekehrter Reihenfolge:

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');