sql >> Databasteknik >  >> RDS >> Mysql

OM INTE FINNS FUNGERAR INTE

MySQL tillåter inte if logik, såvida du inte befinner dig i ett programmeringsblock (lagrad procedur, trigger eller funktion).

Lyckligtvis kan du göra detsamma med WHERE 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 bör bearbeta SELECT före INSERT , så bara en rad ska infogas.

Eller så kan du göra detta som två INSERT s men i motsatt ordning:

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


  1. Omfattning av temporära tabeller i SQL Server

  2. Hur ansluter jag till Mysql med C#?

  3. Förstå Self Join

  4. Topp 10 spelare med det högsta slaggenomsnittet