2017-06-01 146 views
0

我有一个数据库,我把一些社会和他们的雇员。事情是,两个社会可以有一个同名的雇员(但他们是不同的人)。所以当我想插入一个workers(stagiaire)我试图检查它是否存在这个社会。 这里是我的查询:MySQL是否支持“如果不存在”?

INSERT INTO stagiaire(Nom,Email,Telephone,IDSociete) 
VALUES('Paul','[email protected]','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 

继承人“保罗”已经存在于社会“Promoplantes”,我有另一个“保罗”的社会“PachaKebab”(ID = 7)一个我试图插入。

我试过几件事情像IF NOT EXISTS在我的INSERT查询(间开始/结束),但它似乎像phpMyAdim(我使用SQL服务器)无法unserstand的IF NOT EXISTSNOT EXISTS代码。

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

+0

要发生,如果有一个名字做什么冲突? – Phylogenesis

+1

仅供参考phpmyadmin是一个数据库管理工具,你的数据库引擎可能是MySQL, – JeffUK

+2

不存在(select ....) – maSTAShuFu

回答

0

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

INSERT INTO stagiaire(Nom,Email,Telephone,IDSociete) 
SELECT 'Paul','[email protected]','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; 
+0

即使这个语法不起作用。 – TheTinyCat

+0

@TheTinyCat你能发布你有什么错误信息吗? – EstevaoLuis

+0

错误的语法...插入....选择... – maSTAShuFu

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 
+0

我不明白你的'SELECT 1(?)FROM ...' – TheTinyCat

+0

使用不存在或存在将只需要至少一个匹配,不需要读取所有的数据 – maSTAShuFu

+0

是的,但'1'没有任何意义。或者它是一个二元(或布尔)条件? – TheTinyCat