MySQL:如何在左连接中使用列别名?

时间:2016-05-27 22:18:34

标签: mysql sql

我正在尝试在左连接中使用列别名但我在uknown字段中出现sql错误。

select *, (select SenderId from messages where messageId = 5) as senderId  from threads 
Left join users where users.id = senderId

这个查询很简单,但为什么它不起作用或者实现这个目的的最佳方法是什么?

我真的很感激任何贡献。 感谢

2 个答案:

答案 0 :(得分:0)

您不能在ONWHERE子句中使用列别名,因为列别名已分配给结果集中的值,但使用了ONWHERE创建结果集。您需要使用其他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表