我试图左连接一个表与一个用户表。我使用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';
同样,除非有特别的理由,否则不要使用*。