MySQLはif
を許可していません プログラミングブロック(ストアドプロシージャ、トリガー、または関数)にいる場合を除き、ロジック。
幸い、WHERE
でも同じことができます ロジック:
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はSELECT
を処理する必要があります INSERT
の前 、したがって、1行だけを挿入する必要があります。
または、2つのINSERT
としてこれを行うことができます sただし、逆の順序:
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');