MySQL是否支持"如果不存在"?

时间:2017-06-01 07:56:37

标签: mysql sql

我有一个数据库,我把一些社团和他们的员工。问题在于,两个社团可以拥有同名的雇员(但他们是不同的人)。因此,当我想插入一个雇员(stagiaire)时,我会尝试检查这个社会是否存在。 这是我的疑问:

INSERT INTO stagiaire(Nom,Email,Telephone,IDSociete )
VALUES('Paul','ppk@mail.fr','0000000000','7' )
WHERE(SELECT stagiaire.ID FROM stagiaire 
LEFT JOIN societe ON stagiaire.IDSociete = societe.ID
WHERE stagiaire.Nom = 'Paul' AND societe.NomSoc = 'PachaKebab') NOT EXISTS

Heres' Paul'已经存在于社会中的“普罗万方案”我还有另一个' Paul'在社会中#PachaKebab' (ID = 7)我试图插入的那个。

我尝试了IF NOT EXISTS我的INSERT查询(开始/结束之间)等一些事情,但似乎phpMyAdim(我使用的SQL Server)无法解析IF NOT EXISTS或{{ 1}}代码。

这是真的吗?或者我的代码中有错误,我看不到?

2 个答案:

答案 0 :(得分:0)

正确的语法是SELECT ... FROM ... WHERE NOT EXISTS

INSERT INTO stagiaire(Nom,Email,Telephone,IDSociete )
SELECT 'Paul','ppk@mail.fr','0000000000','7'
FROM stagiaire
WHERE NOT EXISTS(SELECT stagiaire.ID FROM stagiaire 
LEFT JOIN societe ON stagiaire.IDSociete = societe.ID
WHERE stagiaire.Nom = 'Paul' AND societe.NomSoc = 'PachaKebab')
LIMIT 1;

答案 1 :(得分:0)

使用不存在并重构您的查询

   INSERT INTO stagiaire(Nom,Email,Telephone,IDSociete )
    Select Nom,Email,Telephone,IDSociete
    From stagiaire s
    WHERE NOT EXISTS(SELECT 1 from societe x
    WHERE x.id = s.IDSociete)
And s.IDSociete = 7