gpt4 book ai didi

没有任何匹配项的 MySql Join 表显示空值

转载 作者:行者123 更新时间:2023-11-29 14:53:16 26 4
gpt4 key购买 nike

您好,我正在尝试加入这样的表:

  SELECT
u.mobile_number,
u.dob,
u.gender,
u.country,
SUM(b.reward_points) AS points
FROM users u
JOIN bookings b ON u.user_id=b.user_id
WHERE u.user_id=20
AND b.attended=1
AND b.review_completed=1
AND b.date > "2010-03-12"
AND b.reward_used=0

但是,由于 bookings 表没有 user_id 20 的记录,因此返回的所有列都有 NULL 值。我想获取用户的值并返回 NULL(当在预订表中找不到相应的行时)。我怎样才能做到这一点?我做错了什么?

最佳答案

您需要将表 b 上的所有条件从 WHERE 子句移至 ON 子句:

  SELECT
u.mobile_number,
u.dob,
u.gender,
u.country,
SUM(b.reward_points) AS points
FROM users u
LEFT JOIN bookings b
ON u.user_id=b.user_id
AND b.attended=1
AND b.review_completed=1
AND b.date > "2010-03-12"
AND b.reward_used=0
WHERE u.user_id=20

说明:无论您使用哪种类型的 JOINWHERE 子句都会过滤结果 - 表 b 中不匹配的记录无法满足此表上的任何条件,因此它们不会被过滤。由查询返回。 ON 子句定义如何将表 b 中的记录附加到表 u 中的记录(因此仅连接 b.attended=1 等的记录)。

关于没有任何匹配项的 MySql Join 表显示空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5282920/

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