我有一个数据库,我把一些社团和他们的员工。问题在于,两个社团可以拥有同名的雇员(但他们是不同的人)。因此,当我想插入一个雇员(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}}代码。
这是真的吗?或者我的代码中有错误,我看不到?
答案 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