如何根据另一张表的引用输出两次具有不同值的列?

时间:2019-04-21 14:46:45

标签: mysql sql where-clause

我有两个表Functionmessage

  1. person表包含列messagereceiverID
  2. senderID表包含列personname

personIDpersonID可用于连接表格

我在两次输出name列时遇到麻烦,一次基于receiverID/senderID,第二次基于receiverID使用senderID子句。 我只能根据WHERE输出一次姓名。

personID = senderID

这将产生一个SELECT person.first_name AS senderFirstName, (SELECT person.first_name FROM person, message WHERE person_id = receiver_id) FROM person, message WHERE person_id = sender_id AND sender_id = 1; 。 我只是不知道下一步该怎么做... SQL的新手。

2 个答案:

答案 0 :(得分:2)

您需要将表person两次连接到表message

select s.name, ...
from message m
inner join person s on m.senderid = s.personid
inner join person r on m.receiverid = r.personid
where m.senderid = 1

答案 1 :(得分:0)

我想你需要这个:

SELECT 
person.first_name AS senderFirstName, 
(SELECT p2.first_name FROM person p2 WHERE p2.person_id = 
m.receiver_id)receiveFirstName
FROM person p , message m 
WHERE p.person_id = m.sender_id AND m.sender_id = 1;