我在 MySQL 上开发我的微型消息系统。
我有表“con”:
id | user1 | user2
1 | 1 | 3
2 | 3 | 5
3 | 2 | 3
4 | 5 | 8
开,例如登录用户 id = 3。
我想从 user_id = 3 正在说话的表用户的 id 中获取。
用户 id = 3 的正确结果:
id | user_id
1 | 1
2 | 5
3 | 2
谢谢 :)
您可以在where
和 中使用以下条件执行此操作select
:
select id,
(case when user1 = 3 then user2 else user1 end) as user
from con
where 3 in (user1, user2);
这只需要通过桌子一次。
SELECT a.id, a.user1 AS user_id FROM con a WHERE user2 = 3
UNION
SELECT b.id, b.user2 AS user_id FROM con b WHERE user1 = 3
选择两组结果(user1 = 3 和 user2 = 3)并使用 将它们合并在一起UNION
。
SELECT id, user1 AS user_id
FROM con
WHERE user2 = '3'
UNION
SELECT id, user2 AS user_id
FROM con
WHERE user1 = '3'