MySQL选择具有多个条件的同一列
我有一个“消息”表,其中包括以下列:MySQL选择具有多个条件的同一列,mysql,sql,Mysql,Sql,我有一个“消息”表,其中包括以下列: message\u id、sender\u id、receiver\u id 以及“成员”表,其中包括以下列: id,用户名 WHERE messages.sender_id = members.id AND members.username = ? 我的发件箱查询如下 SELECT message_id, username AS 'receiver_username', sender_id, receiver_id, time_sent, time_re
message\u id、sender\u id、receiver\u id
以及“成员”表,其中包括以下列:
id,用户名
WHERE messages.sender_id = members.id AND members.username = ?
我的发件箱查询如下
SELECT message_id, username AS 'receiver_username', sender_id,
receiver_id, time_sent, time_read, replied_to_id,item_id_reference,
subject FROM messages, members WHERE messages.sender_id = members.id
AND members.username = ?
我希望我的查询返回基于发件人的用户名的消息\u id
WHERE messages.sender_id = members.id AND members.username = ?
还包括基于返回的receiver\u id
在一个查询中如何执行此操作?您需要两次加入成员表,一次用于发送方名称,一次用于接收方名称。
一个简单的例子:
SELECT
s.user_name sender,
r.user_name receiver
FROM
messages m
JOIN
members s ON
m.sender_id = s.member_id
JOIN
members r ON
m.receiver_id = r.member_id
这可以作为两次加入成员
表的替代方法:
SELECT
message_id, username, sender_id,
receiver_id, time_sent, time_read, replied_to_id,item_id_reference,
subject
FROM
messages msg INNER JOIN
members m ON m.id IN (msg.receiver_id, msg.sender_id)
AND m.username = ?
您能否提供示例数据和预期结果,目前还不清楚您想要实现什么。他想获得members.username两次:一次是members.id=messages.sender_id,另一次是members.id=messages.receiver_id我想您在JOIN子句中的别名后漏掉了ON