sql >> Base de Datos >  >> RDS >> Mysql

SI NO EXISTE NO FUNCIONA

MySQL no permite if lógica, a menos que esté en un bloque de programación (procedimiento almacenado, activador o función).

Afortunadamente, puedes hacer lo mismo con 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 debería procesar SELECT antes del INSERT , por lo que solo se debe insertar una fila.

O bien, puede hacer esto como dos INSERT s pero en el orden contrario:

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