我有3个三个表:a
,aLocale
,aCompany
。
如果a.id = aLocale.parentID
不存在,我需要获取aCompany.parentID
的所有行。
我知道aLocale
将是innerJoin
,但是aCompany
呢?
我也可能看错了问题。我使用aCompany的唯一原因是如果不存在匹配行。当前,我正在运行a
的查询并将结果作为数组获取。然后,我遍历数组并取消设置与单独的aCompany
查询匹配的项。我觉得将有一个更好的方法来执行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
编辑:
您还可以使用Coalesce()代替*来获取parentID不为null的选择
SELECT COALESCE(aCompany.parentID, aLocale.parentID) AS parentID FROM ....
使用Coalesce(),您将在参数列表中找到第一个非空值
关于php - 从查询列表中删除的Mysql Join类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22332398/