mysql 如果连接条件失败,左连接不包括 ID (null)
mysql left join doesn't inclue ID if joined condition fails (null)
我正在尝试与用户 table 一起加入 table。我正在使用 LEFT JOIN,因为我仍然想要 return 没有条目的用户加入 table。这是有效的,但是任何在加入的 table 中没有条目的条目都会丢失它们的 ID (uid)(这就是我链接 tables 的方式)
我的查询:
$sql = 'SELECT *
FROM `users` cu
LEFT JOIN `product_registrations` cpr
ON cu.uid = cpr.uid';
有产品注册的人return一切如常,但是没有注册的人似乎失去了他们的uid(在结果中显示为null)
我真的迷路了,欢迎任何建议!
cpr.uid 应该为 null 而不是 cu.uid。如果您阅读 cu.uid 或 cpr-uid 并尝试以下操作,请查看您的逻辑:
SELECT cu.uid as cuid
FROM `users` cu
LEFT JOIN `product_registrations` cpr
ON cu.uid = cpr.uid
在我的查询中你不应该有任何空值
如果没有 cpr 记录,cpr.uid 将为空。不只是使用 *,而是为 cu.uid.
添加一个别名列名
$sql = 'SELECT `users`.*, `product_registrations`.*, `users`.`uid` as user_id
FROM `users` cu
LEFT JOIN `product_registrations` cpr
ON cu.uid = cpr.uid';
此外,除非有特殊原因,否则不要使用 *。只需使用您需要的字段。
我相信这就是 LEFT JOIN
正确的死法。如果您正在尝试获取 cpr.uid
字段,如果未找到匹配项,则它是 NULL
,但是您可以使用 COALESCE()
函数来显示默认值,该值表示不存在,例如
SELECT cu.*, COALESCE(cpr.uid, -1)
FROM `users` cu
LEFT JOIN `product_registrations` cpr
ON cu.uid = cpr.uid;
我正在尝试与用户 table 一起加入 table。我正在使用 LEFT JOIN,因为我仍然想要 return 没有条目的用户加入 table。这是有效的,但是任何在加入的 table 中没有条目的条目都会丢失它们的 ID (uid)(这就是我链接 tables 的方式)
我的查询:
$sql = 'SELECT *
FROM `users` cu
LEFT JOIN `product_registrations` cpr
ON cu.uid = cpr.uid';
有产品注册的人return一切如常,但是没有注册的人似乎失去了他们的uid(在结果中显示为null)
我真的迷路了,欢迎任何建议!
cpr.uid 应该为 null 而不是 cu.uid。如果您阅读 cu.uid 或 cpr-uid 并尝试以下操作,请查看您的逻辑:
SELECT cu.uid as cuid
FROM `users` cu
LEFT JOIN `product_registrations` cpr
ON cu.uid = cpr.uid
在我的查询中你不应该有任何空值
如果没有 cpr 记录,cpr.uid 将为空。不只是使用 *,而是为 cu.uid.
添加一个别名列名$sql = 'SELECT `users`.*, `product_registrations`.*, `users`.`uid` as user_id
FROM `users` cu
LEFT JOIN `product_registrations` cpr
ON cu.uid = cpr.uid';
此外,除非有特殊原因,否则不要使用 *。只需使用您需要的字段。
我相信这就是 LEFT JOIN
正确的死法。如果您正在尝试获取 cpr.uid
字段,如果未找到匹配项,则它是 NULL
,但是您可以使用 COALESCE()
函数来显示默认值,该值表示不存在,例如
SELECT cu.*, COALESCE(cpr.uid, -1)
FROM `users` cu
LEFT JOIN `product_registrations` cpr
ON cu.uid = cpr.uid;