gpt4 book ai didi

mysql - 如果其中一个表为空,涉及 OR 的 sql 查询将不会返回结果

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:31 25 4
gpt4 key购买 nike

我无法解决这个对 mysql 数据库的查询的小问题

SELECT s.*
FROM section AS s, sectioncompany AS scom
WHERE ((s.restricted = 0 ) OR (s.restricted = 1 AND s.id = scom.sectionId AND scom.companyId = $companyId))

当 sectioncompany 表中有条目时,这可以正常工作并返回结果,但是当该表为空时,查询将不会产生任何结果。目前我通过简单地向 sectioncompany 表添加一个空记录来解决问题,但我想了解我忽略了什么。如您所见,一旦表为空,就不会满足涉及该表中现有值的条件,但它仍应为 s.restricted = 0 返回一些内容,不是吗?我错过了什么?

谢谢

最佳答案

这里的问题是您正在使用 INNER JOIN(通过使用 WHERE 子句来匹配 (s.id = scom.sectionId)。您想要的是 LEFT JOIN:

SELECT s.*
FROM section s
LEFT JOIN sectioncompany scom ON (s.id = scom.sectionId)
WHERE ((s.restricted = 0 ) OR (s.restricted = 1 and scom.companyId = $companyId))

关于mysql - 如果其中一个表为空,涉及 OR 的 sql 查询将不会返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10127788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com