Mysql的类型加入以从查询列表中删除

时间:2014-03-11 17:39:38

标签: php mysql sql

我有3张桌子:aaLocaleaCompany

如果a.id = aLocale.parentID不存在,我需要获取aCompany.parentID的所有行。

我知道aLocale将是innerJoin,但aCompany呢?

我也可以看错了。我使用aCompany的唯一原因是匹配行不存在。目前,我正在运行a的查询并将结果作为数组获取。然后我遍历数组并取消设置与aCompany的单独查询匹配的项目。我觉得用1个查询可以有更好的方法。

1 个答案:

答案 0 :(得分:1)

您可以使用LEFT JOIN而不是INNER JOIN,这将返回甚至不匹配的值

SELECT * FROM a INNER JOIN aLocale ON a.id = alocale.parentID 
LEFT JOIN aCompany ON aCompany.parentID = alocale.parentID 
WHERE aCompany.parentID IS NULL

编辑: 您还可以在select

中使用coalesce()而不是*来获取parentID not null
SELECT COALESCE(aCompany.parentID, aLocale.parentID) AS parentID FROM ....

使用coalesce(),你会在参数列表

中找到第一个非空值