【发布时间】:2021-12-30 18:36:20
【问题描述】:
我有表 user_follow,它只有两列:who 和 whom。当 WHO 遵循 WHOM 时,它们代表用户之间的联系。如果两个用户互相关注,他们被视为朋友。在这种情况下,表将包含记录:
WHO WHOM
1 2
2 1
其中 1 和 2 只是用户 ID。
为了确定两个用户是否是朋友,我必须查询表并使用简单条件
SELECT COUNT(*)
FROM user_follow
WHERE (who = 1 AND whom = 2) OR (who = 2 AND whom = 1)
如果我得到2,那么他们就是朋友。
但是如果我想加载所有用户朋友的列表,我不能这样做。所以我想出了 sql join 自己:
SELECT uf2.whom
FROM user_follow AS uf1
LEFT JOIN user_follow AS uf2 ON uf1.who = uf2.whom
WHERE uf1.whom = ? AND uf2.who = ? ORDER BY uf2.whom
我做了一个虚拟表来测试它,它可以工作。但我希望有人确认这是正确的解决方案。
【问题讨论】: