Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL左加入赢得';行不通_Mysql_Sql_Left Join - Fatal编程技术网

MySQL左加入赢得';行不通

MySQL左加入赢得';行不通,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

我有一个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
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