MySQL左加入赢得';行不通
我有一个mysql连接,由于某些原因,它返回了image、firstname和lastname的重复字段。好像它没有正确连接 下面是SQLMySQL左加入赢得';行不通,mysql,sql,left-join,Mysql,Sql,Left Join,我有一个mysql连接,由于某些原因,它返回了image、firstname和lastname的重复字段。好像它没有正确连接 下面是SQL SELECT a.follow_id, a.user_id, a.following, b.firstname, b.lastname, c.firstname, c.lastname, b.image, c.image FROM followers a LEFT JOIN candidates b ON a.following = b.user_id
SELECT a.follow_id, a.user_id, a.following, b.firstname, b.lastname, c.firstname, c.lastname, b.image, c.image
FROM followers a
LEFT JOIN candidates b ON a.following = b.user_id
LEFT JOIN donors c On a.following = c.user_id
WHERE a.user_id = 222
LIMIT 9
候选人和捐赠者都有名字、姓氏和图像,所以我需要获取这些字段,但不能重复这些字段
我的结果
有人能告诉我我做错了什么吗
提前谢谢
SELECT a.follow_id, a.user_id, a.following, b.firstname, b.lastname, b.image
FROM followers a
LEFT JOIN candidates b ON a.following = b.user_id
WHERE a.user_id = 222
UNION DISTINCT
SELECT a.follow_id, a.user_id, a.following, c.firstname, c.lastname, c.image
FROM followers a
LEFT JOIN donors c On a.following = c.user_id
WHERE a.user_id = 222
我不确定我是否正确理解了您的问题。您的
follow\u id
和follow
字段是唯一的。由于要使用唯一的以下字段加入候选表和捐赠者表,因此需要创建两个子查询,从每个表中提取相关信息,并从followers表中提取用户id
然后,您可以从followers表连接到每个子查询:
SELECT f.user_id,
can.firstname,
can.lastname,
don.firstname,
don.lastname,
can.image,
don.image
FROM followers f
LEFT JOIN (SELECT a.user_id,
a.following,
b.firstname,
b.lastname,
b.image
FROM followers a
INNER JOIN candidates b
ON a.following = b.user_id) can
ON f.user_id = can.user_id
LEFT JOIN (SELECT a.user_id,
a.following,
c.firstname,
c.lastname,
c.image
FROM followers a
INNER JOIN donors c
ON a.following = c.user_id) don
ON f.user_id = don.user_id
WHERE f.user_id = 222
LIMIT 9;
我知道我做得不对,请给我指路!:)DISTINCT sill返回一个包含重复列的表。我正在使用LIMIT将结果限制为9行。您的查询中缺少先前的9行…我对其进行了编辑。很抱歉给你带来了困惑。仍然在结果中返回重复的列。有什么想法吗?请看结果的图片…重复的列我刚刚做了,它返回两个额外的行,只有用户id,其他字段为空。为什么它会多返回两行?由于左连接,总共只有两行数据。如果在“捐赠者”或“候选人”表中未找到任何数据,则这些字段将返回NULL(这意味着这些用户后面没有任何人)。尝试使用内部联接。这样做了,谢谢…我需要重新学习我的sql错误。:)+从我这里得到1