具有条件的MySQL INSERT数据:检查另一个表中是否存在值以便将值插入第三个表

时间:2018-03-12 10:15:50

标签: mysql sql

我有4张桌子

1 / liste-articles

enter image description here

2 / cmd-moy-j

enter image description here

3 / cmd-药物

enter image description here

4 / cmd-alimentation

enter image description here

首先,我需要检查一下“cmd-moy-j”。“Famille”是否为空。如果是这样,我需要检查“cmd-moy-j”。“代码文章”是否存在于“cmd-medicaments”或“cmd-alimentation”或“cmd-consommables”表中,以便添加此“代码文章”到一个名为“liste-articles”的表。您可以在以下算法中查看详细信息

我想这样做:(只有一个MySQL请求)

  

如果'cmd-moy-j.Famille'=“”(是空的)

     

然后{

     

if('cmd-moy-j.Code Article'存在于'cmd-medicaments')

 then 
 INSERT a new row to 'liste-articles' table with:
 liste-articles.Famille = "MEDICAMENT"
 liste-articles.Code Article = cmd-moy-j.Code Article
     

else if('cmd-moy-j.Code Article'存在于'cmd-alimentation')

 then
 INSERT a new row to 'liste-articles' table with:
 liste-articles.Famille = "ALIMENTATION"
 liste-articles.Code Article = cmd-moy-j.Code Article
     

否则        使用以下命令将新行插入“liste-articles”表:        liste-articles.Famille =“NULLL”        liste-articles.Code Article = cmd-moy-j.Code Article   }

感谢您的帮助。 问候。

1 个答案:

答案 0 :(得分:0)

因此,您尝试根据存储文章的表更新所有文章列表系列。试试这个问题:

UPDATE list-articles A
INNER JOIN cmd-moy-j B ON A.`Code Article`=B.`Code Article`
SET A.Famille=(
  CASE WHEN EXISTS (SELECT 1 FROM cmd-medicaments C 
                    WHERE B.`Code Article`=C.`Code Article` LIMIT 1)
       THEN 'MEDICAMENT'
       WHEN EXISTS (SELECT 1 FROM cmd-alimentation D 
                    WHERE B.`Code Article`=D.`Code Article` LIMIT 1)
       THEN 'ALIMENTATION'
       ELSE 'NULLL'
  END
)
WHERE A.Famille IS NULL OR A.Famille='NULLL' OR A.Famille='';

请参阅以下链接以获取见解:

MySQL CASE Expression
    MySQL Join Made Easy
    MySQL UPDATE JOIN