这个MySQL SQL语句传达了我正在尝试做的事情,但无效:
SELECT * FROM
(SELECT DISTINCT Thing FROM BigList) AS SomeThing
LEFT JOIN thingDetail ON SomeThing = thingDetail.Thing
-- other left joins follow
问题是在ON子句中,不允许使用别名。并且,从子查询中删除别名会产生错误,需要别名。非常捕获22。
我在网上找到了很多例子,其中JOIN-part是子查询,别名在那里工作。但我还没有找到能够做到这一点的事情。
如果它在子查询的MySQL手册中,我就错过了它。我应该使用什么语法来执行此操作?
答案 0 :(得分:3)
SELECT * FROM
(SELECT DISTINCT Thing FROM BigList) AS SomeThing
LEFT JOIN thingDetail ON SomeThing.Thing = thingDetail.Thing
-- other left joins follow
您指的是table
别名,而不是表中的column
。
答案 1 :(得分:1)
您忘记在thing
子句中添加列名ON
。它应该像
SELECT * FROM
(SELECT DISTINCT Thing FROM BigList) AS SomeThing
LEFT JOIN thingDetail ON SomeThing.Thing = thingDetail.Thing
答案 2 :(得分:1)
你可能已经混淆了"加入"列别名的别名。联接中的subselect
就像它自己的表一样,您也可以从BigList中选择不同的列,因此我的版本中的SomeThingTab
就像一个虚拟的动态表。
SELECT * FROM
(SELECT DISTINCT Thing as SomeThing FROM BigList) AS SomeThingTab
LEFT JOIN thingDetail ON SomeThingTab.SomeThing = thingDetail.Thing