sql >> Databáze >  >> RDS >> Mysql

POKUD NEEXISTUJE, NEFUNGUJE

MySQL nepovoluje if logika, pokud nejste v programovacím bloku (uložená procedura, spouštěč nebo funkce).

Naštěstí můžete udělat totéž pomocí WHERE logika:

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 by mělo zpracovat SELECT před INSERT , takže by měl být vložen pouze jeden řádek.

Nebo to můžete udělat jako dva INSERT s, ale v opačném pořadí:

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. Jak nastavit rozšíření Postgres?

  2. hibernate vložit dávku s rozděleným postgresql

  3. Připojení JDBC přestane reagovat bez odezvy ze serveru SQL Server 2008 r2

  4. sqlite:jak přidat celkový čas hh:mm:ss, kde je datový typ sloupce DATETIME?