我正在尝试在左连接中使用列别名但我在uknown字段中出现sql错误。
select *, (select SenderId from messages where messageId = 5) as senderId from threads
Left join users where users.id = senderId
这个查询很简单,但为什么它不起作用或者实现这个目的的最佳方法是什么?
我真的很感激任何贡献。 感谢
答案 0 :(得分:0)
您不能在ON
或WHERE
子句中使用列别名,因为列别名已分配给结果集中的值,但使用了ON
和WHERE
创建结果集。您需要使用其他JOIN
。
SELECT t.*, m.senderId, u.*
FROM threads AS t
CROSS JOIN messages AS m
LEFT JOIN users AS u ON u.id = m.SenderId
WHERE m.messageId = 5
答案 1 :(得分:0)
select t.*, mu.*
from threads as t
Left Join
(select SenderId,users. *
from messages, users
where messages.messageId
= users.id and messsageId = 5) as mu
您需要使用一些id加入线程和mu表