gpt4 book ai didi

mysql - SQL LEFT JOIN 没有返回正确的数据

转载 作者:行者123 更新时间:2023-11-29 06:37:00 25 4
gpt4 key购买 nike

我正在尝试构建一个 SQL 连接表,但它没有返回我想要的正确数据。所以我有一个结构如下的 slider 表。 sliders Table structure

因此该表有一个引用某项的外键。项目或 slider 有一个名为:已发布的相同列,它告诉 slider /项目是否已发布。

我正在尝试构建一个查询,该查询返回所有已发布的 slider 和它们所属的已发布项目,并与 item_id 为 nll 的 slider 连接。

所以根据上图,查询应该只返回 id 为 (2-3-4) 的 3 行,因为表 items 中 id 为 34 (item_id=34) 的项目未发布,因此它不应该出现在返回值中.到目前为止我构建的查询是这样的:

SELECT *
FROM sliders
LEFT JOIN items ON sliders.item_id = items.id
WHERE sliders.published =1 AND items.published =1

但是查询只返回 2 行。 id 为 2 和 3 的行对应于 id 为 23、28 的项目。

返回结果如下:

returned Result

所以它返回了 2 行而不是 3 行,缺少的行是 id 为 3 的行,其中 item_id=null。

我一整天都在尝试解决这个问题,但似乎我被困在这里了......

任何帮助将不胜感激..

最佳答案

如果您使用 LEFT JOIN 并且没有匹配项,则右侧表 ( items ) 将具有 NULL作为其列的值。因此你不能有 items.published = 1在您的 WHERE 子句中并期望这些行显示出来,因为 NULL不等于 1 .

假设我没有误解问题,您需要将其更改为 AND (items.published IS NULL OR items.published = 1) - 你也可以只做 AND items.published <> 0 .这实质上是检查项目是否已发布如果它们存在

关于mysql - SQL LEFT JOIN 没有返回正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23956622/

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