Mysql
 sql >> Base de données >  >> RDS >> Mysql

SI NON EXISTE NE FONCTIONNE PAS

MySQL n'autorise pas if logique, sauf si vous êtes dans un bloc de programmation (procédure stockée, déclencheur ou fonction).

Heureusement, vous pouvez faire la même chose avec WHERE logique :

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 devrait traiter le SELECT avant le INSERT , donc une seule ligne doit être insérée.

Ou, vous pouvez le faire en deux INSERT s mais dans l'ordre inverse :

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