mysql - 如何根据另一个表的引用输出一列两次并使用不同的值?

标签 mysql sql where-clause

我有两个表messageperson:

  1. message 表包含列 receiverIDsenderID
  2. person 表包含列 namepersonID

personIDreceiverID/senderID 可用于连接表

我在两次输出名称列时遇到问题,一次基于 receiverID,第二次基于使用 WHERE 子句的 senderID 。 我只能根据 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;

这会产生错误 1242 (21000):子查询返回超过 1 行。 我只是不知道下一步该尝试什么...对 SQL 非常陌生。

最佳答案

您需要将表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

关于mysql - 如何根据另一个表的引用输出一列两次并使用不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55783751/

相关文章:

mysql - 使用 Count 时 SQL 查询不显示所有结果

MySQL - 仅从 varchar 列中选择数值

php - 获取mysql中价格最高的id

MySQL 从搜索问题开始

c# - 使用 Array.BinarySearch() 返回第一个值 <= 查找值?

javascript - Angular 发布到 MySQL 错误

mysql - 从字符串转换日期和/或时间时转换失败。 - 错误

android - 在 android 中使用 SQLite 时,列 '_id' 不存在

MySQL 修剪 WHERE 中的值

mysql - 加入条件 ON 与 WHERE