【发布时间】:2021-08-06 13:33:16
【问题描述】:
老实说,我不确定为什么会出现错误,因为我刚刚将两个选择移到了不同的区域并在左外连接中,但它们之前在主打开选择语句中工作过
SELECT body, timestamp FROM chats
LEFT OUTER JOIN messages ON chats.id = messages.chat_id
LEFT OUTER JOIN (SELECT DISTINCT sender.first_name AS sender_first_name, sender.last_name AS sender_last_name,
sender.username AS sender_username) users AS sender ON chats.from_user_id = sender.id
LEFT OUTER JOIN (SELECT DISTINCT reciever.first_name AS reciever_first_name, reciever.last_name AS reciever_last_name,
reciever.username AS reciever_username) users AS reciever ON chats.to_user_id = reciever.id
WHERE from_user_id = :fromUserId AND to_user_id = :toUserId
也尝试过使用 FROM 子句
LEFT OUTER JOIN (SELECT DISTINCT sender.first_name AS sender_first_name, sender.last_name AS sender_last_name,
sender.username AS sender_username FROM users) users AS sender ON chats.from_user_id = sender.id
【问题讨论】:
-
你能解释一下
:fromUserId在这里是什么意思吗?你从哪里执行这个查询?该错误似乎与语法无关,但可能与其他问题有关。 -
@TimBiegeleisen 我稍后会绑定它。在我将选择更改为 distrinct 并在左外连接内之前,该部分工作得很好。
-
您的子查询不包含 FROM 子句。
-
似乎子查询中的
) users实际上应该是FROM users) -
嘿,戈登,这看起来很有希望。 DISTINCT 应该做到这一点,所以我可以为用户获取一次记录,但为聊天获取多个记录
标签: mysql sql join mariadb relational-database