mysql - 如何修复 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
解决方案
也许取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
这都是由union
2 个内部查询产生的单个查询。
推荐阅读
- java - Java 8 lambda 表达式或旧方法
- javascript - 如何在执行下一行之前等待 Node JS 中的 API 响应
- php - PHP中的'^'符号是什么意思?
- angular - 角度扩展面板未打开
- swift - swiftUI 我想在后台处理我的应用程序(后台处理)
- javascript - 使用 AJAX 将日期时间转换为字符串
- ruby-on-rails - 如何在 Ruby on Rails 中使用 Faker 生成 json?
- reactjs - React 路由在 dev 中工作但在 Apache 上的构建中不起作用——构建问题还是 Web 服务器问题?
- angular - 如何使用烧瓶后端通过 HTTP 流式传输 JSON 数据?
- javascript - 反应原生:减少选择器的大小 - 这样做的方法是什么?