如果连接条件失败(null), mysql左连接不包含ID


mysql left join doesn't inclue ID if joined condition fails (null)

我试图左连接一个表与一个用户表。我使用LEFT JOIN是因为我仍然希望返回在连接表中没有条目的用户。这是工作的,但是任何在连接表中没有条目的条目都会丢失它们的ID (uid)(这就是我连接表的方式)

我查询:

$sql = 'SELECT * 
FROM  `users` cu
LEFT JOIN  `product_registrations` cpr
ON cu.uid = cpr.uid';

有产品注册的人返回他们应该返回的所有内容,但是没有的人似乎丢失了他们的uid(在结果中显示为null)

我真的迷路了,任何建议都很感谢!

我相信这就是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;

Uid应该是空的,而不是cuuid。如果你读cu,看看你的逻辑。Uid或cpr-uid,然后试试:

SELECT cu.uid as cuid
FROM  `users` cu
LEFT JOIN  `product_registrations` cpr
ON cu.uid = cpr.uid

在我的查询你不应该有任何空值

如果没有心肺复苏术记录,Uid将为空。为cud .uid添加一个别名列名,而不是仅仅使用*。

$sql = 'SELECT `users`.*, `product_registrations`.*, `users`.`uid` as user_id
FROM  `users` cu
LEFT JOIN  `product_registrations` cpr
ON cu.uid = cpr.uid';

同样,除非有特别的理由,否则不要使用*。