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