2017-06-01 80 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