mysql - SQL - 用户 Zebra 表 - 两个用户是否相互关注?

标签 mysql sql

我有下表 user_zebra:

Click here to see the table

此表用于存储我网站上两个成员之间的友谊 - user_id 是发送 friend 请求的人,member_id 是他们试图添加的人。日期不言自明。

当其他用户对好友请求响应为"is"时,将添加另一个条目,但 user_id 和 member_id 翻转。只有当双方都有条目时,您才被视为 friend ...否则您只是关注该用户。

我需要知道的是是否有 SQL 代码可以返回 user_id 和 member_id 只有当有另一个条目翻转这些值时。这可能吗?或者有更简单的方法吗?

我希望我已经说清楚了,抱歉发了这么长的帖子。

最佳答案

是的。一种方法是 exists :

select user_id, member_id
from t
where exists (select 1
              from t t2
              where t2.user_id = t.member_id and t2.member_id = t.user_id
             );

MySQL也支持很方便的IN -with-元组语法:

select t.*
from t
where (t.user_id, t.member_id) in (select t2.member_id, t2.user_id from t t2);

在这两个中,您可能想要添加 where user_id < member_id以避免结果集中出现重复。

关于mysql - SQL - 用户 Zebra 表 - 两个用户是否相互关注?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51365009/

相关文章:

php - 将 SQL SUM() 查询设置为 PHP 变量,并回显结果

java - 即使servlet 数据库中不存在表employee,rs 也始终为true

php - 选择 LAST 和 FORELAST 值

PHP 代码在使用 HTML 表格时不打印任何内容

mysql - 如何在插入值存在的地方替换主键?

MySql 2个表的内连接

mysql - 尝试使用 phpMyAdmin 创建数据库时访问被拒绝错误

mysql - 按 IP 排序然后继续选择记录,直到我有 3 个唯一的 IP

java - Hibernate - 打开和关闭 SQL 索引的使用

sql - 如何根据另一列的一部分更新列