首页 > 解决方案 > 如何修复 Sql 查询

问题描述

请我一直在尝试查询以返回用户拥有的朋友,在我的成员表中,我有成员的用户 ID、名字和姓氏,我在朋友表中有用户 ID 列和朋友 ID 列,现在我我正在将我的成员表与朋友表结合起来,这样我就可以得到一个朋友的名字。

用户表

user_id 名字 姓氏

   2      John        drake         
   3       Hamer      Joy       
   4        Finter     Richy    

朋友桌

朋友 ID 用户 ID 朋友 ID

   1           2          3         
   2            4         2         
   3            4         3

这是我执行的查询

SELECT a.friends_id,a.user_id, 
       a.friend_id, b.firstname, b.lastname
FROM friends AS a,users As b
WHERE (a.friend_id = b.user_id OR a.user_id = b.user_id) AND
      (a.friend_id = 2 OR a.user_id =2)

这是我得到的结果

friends_id  user_id  friend_id  firstname   lastname    
   1           2       3          John      drake       
   1           2       3          Hamer     Joy         
   3           4       2          John      drake       
   3           4       2           Finter    Richy  

这是我期待的结果

friends_id  user_id  friend_id  firstname   lastname    
   1           2       3          Hamer     Joy         
   3           4       2           Finter    Richy

标签: mysqlsql

解决方案


也许取union指定个人的一个朋友加上以他为朋友的用户:

select a.friends_id, a.user_id, a.friend_id, b.firstname, b.lastname
from friends a, users b
where a.user_id = 2 and b.user_id = a.friend_id 

union

select a.friends_id, a.user_id, a.friend_id, b.firstname, b.lastname
from friends a, users b
where a.friend_id = 2 and b.user_id = a.user_id

这都是由union2 个内部查询产生的单个查询。


推荐阅读