sql查询与条件

时间:2015-06-16 08:02:47

标签: mysql sql

SELECT sg.*
FROM   stokgudang sg
WHERE NOT EXISTS (SELECT kd.*
                  FROM   killer_dry kd                                 
                  WHERE  kd.id_output_breakdown = sg.id_output_breakdown)
  AND sg.after_airdry= 'True' OR sg.status_airdry = 'True'

我想要的是不要显示已经在killer_dry中的id_output_breakdown,只显示当它还没有在killer_dry中时sg.after_aidry = true或status_airdry = True

但是当它已经在killer_dry中时,id_output_breakdown仍在列表中,为什么?

2 个答案:

答案 0 :(得分:0)

你可以尝试一下:

SELECT  sg.*
FROM    stokgudang sg
        LEFT JOIN killer_dry kd ON 
            kd.id_output_breakdown = sg.id_output_breakdown
            AND (sg.after_airdry= 'True' OR sg.status_airdry = 'True')
WHERE   kd.id_output_breakdown IS NULL

顺便说一句:避免使用" *"在您的选择列表中,只选择您需要的列,即使我需要所有列,我按名称指定它们。因此,当您在表格中添加/删除列时,可以避免不愉快!

答案 1 :(得分:0)

你也可以这样做,虽然我怀疑有比相关子查询更好的解决方案:

SELECT sg.*
  FROM stokgudang sg
 WHERE NOT EXISTS (SELECT kd.*
                     FROM killer_dry kd                                 
                    WHERE  kd.id_output_breakdown = sg.id_output_breakdown)
   AND 'True' IN(sg.after_airdry,sg.status_airdry)