我的数据库中有两个表
表:
users
列:id
、username
、email
等表:
users_messages
列:id
、to
、from
、messages
,发送时间
列 to
和 from
是 users
表中的 users
键。问题是我需要:
“从用户名和消息中选择所有用户”。
例如,如果表格行如下所示:
From, To, Message
11, 14, Hi, How are you
14, 11, Hello,
如果 11 是 john,14 是 mark,那么我需要这样的输出:
From, To, Message
john, mark, Hi, How are you
mark, john, Hello,
在我的查询中,我只能从列或列中获取用户名,但不能同时从两者中获取用户名。我怎样才能执行一个查询,让我从和到两个用户名?
以下查询给出空结果:
SELECT u.username, m.message, m.from, m.to
FROM `users_messages` m, `users` u
where
m.from = u.id and m.to = u.id
LIMIT 0 , 30
我尝试了其他查询,但无法获得所需的输出。消息表是否也需要自联接?
最佳答案
SELECT u1.username AS "sender", u2.username AS "recipient", m.message, m.from, m.to
FROM `users_messages` m
LEFT JOIN `users` u1 ON (u1.id = m.from)
LEFT JOIN `users` u2 ON (u2.id = m.to)
WHERE m.from = XX OR m.to = XX
关于php - Mysql - 如何获取同一个表的两个外键列的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21795567/