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

SE NON ESISTE NON FUNZIONANTE

MySQL non consente if logica, a meno che non ci si trovi in ​​un blocco di programmazione (procedura memorizzata, trigger o funzione).

Fortunatamente, puoi fare lo stesso con 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 dovrebbe elaborare SELECT prima del INSERT , quindi dovrebbe essere inserita solo una riga.

Oppure puoi farlo come due INSERT s ma nell'ordine opposto:

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