我有3个三个表:aaLocaleaCompany

如果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/

10-12 14:17