Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SE NÃO EXISTE NÃO FUNCIONA


MySQL não permite if lógica, a menos que você esteja em um bloco de programação (procedimento armazenado, gatilho ou função).

Felizmente, você pode fazer o mesmo com WHERE lógica:
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 deve processar o SELECT antes do INSERT , portanto, apenas uma linha deve ser inserida.

Ou você pode fazer isso como dois INSERT s, mas na ordem oposta:
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');