sql - SQL查询好友关系双方
问题描述
我的 Postgres 表设置如下:
CREATE TABLE "Friendships" (
id integer DEFAULT PRIMARY KEY,
"fromUserId" integer NOT NULL REFERENCES "Users"(id),
"toUserId" integer NOT NULL REFERENCES "Users"(id)
);
当用户获取他们的友谊时,我运行:SELECT * FROM Friendships WHERE fromUserId=XXXX
.
如何修改查询,以便根据是否toUserId
还添加了该用户将其他数据添加到结果中(真/假)?
示例结果:
[
{ id: 444, fromUserId: 1, toUserId: 22, addedBack: false },
{ id: 445, fromUserId: 1, toUserId: 67, addedBack: true },
{ id: 446, fromUserId: 1, toUserId: 599, addedBack: true },
{ id: 447, fromUserId: 1, toUserId: 733, addedBack: false },
]
解决方案
您可以使用左外连接来检查互惠值:
select
f.id,
f.fromuserid,
f.touserid,
case when r.id is null then false else true end as addedback
from friendships f
left join friendships r on f.touserid = r.fromuserid
and r.touserid = f.fromuserid
where f.fromuserid = XXXX
推荐阅读
- python - 使用 boto3 和 python 列出 s3 存储桶
- cypress - 如何使用 cypress 拦截具有相同端点的多个 XHR 请求
- pandas - 带有日期的 DataFrame 列转换为 Unix
- python - 在 python 中使用 Newton-Raphson 求解双曲函数
- if-statement - Google Sheet 的 IF 语句公式
- ruby-on-rails - Errno::ENOTTY Inappropriate ioctl for device when trying to send file to SFTP
- javascript - 如何防止表单字段被清除?
- spring - CachingConnectionFactory 和 ConnectionFactory 有什么区别?
- javascript - 如何在 Django 中更新 html 视图中的数据?
- javascript - 当我尝试以透明度渲染 png 时,gl-react 显示像素化边框