Mysql 在子查询上使用别名,然后在on子句中使用它进行左联接
此MySQL SQL语句表示我正在尝试执行的操作,但无效:Mysql 在子查询上使用别名,然后在on子句中使用它进行左联接,mysql,sql,left-join,Mysql,Sql,Left Join,此MySQL SQL语句表示我正在尝试执行的操作,但无效: SELECT * FROM (SELECT DISTINCT Thing FROM BigList) AS SomeThing LEFT JOIN thingDetail ON SomeThing = thingDetail.Thing -- other left joins follow 问题是在ON子句中,不允许使用别名。并且,从子查询中删除别名会产生一个错误,即需要别名。第二十二条军规 我在网上找到了很多例子,其中
SELECT * FROM
(SELECT DISTINCT Thing FROM BigList) AS SomeThing
LEFT JOIN thingDetail ON SomeThing = thingDetail.Thing
-- other left joins follow
问题是在ON子句中,不允许使用别名。并且,从子查询中删除别名会产生一个错误,即需要别名。第二十二条军规
我在网上找到了很多例子,其中连接部分是一个子查询,别名在那里起作用。但我还没有找到能做到上述的东西
如果它在MySQL子查询手册中,我就找不到了。我应该使用什么语法来执行此操作
SELECT * FROM
(SELECT DISTINCT Thing FROM BigList) AS SomeThing
LEFT JOIN thingDetail ON SomeThing.Thing = thingDetail.Thing
-- other left joins follow
您引用的是表别名,而不是表中的列
您引用的是表别名,而不是表中的列 您忘记在ON子句中添加列名。应该是
SELECT * FROM
(SELECT DISTINCT Thing FROM BigList) AS SomeThing
LEFT JOIN thingDetail ON SomeThing.Thing = thingDetail.Thing
您忘记在ON子句中添加列名。应该是
SELECT * FROM
(SELECT DISTINCT Thing FROM BigList) AS SomeThing
LEFT JOIN thingDetail ON SomeThing.Thing = thingDetail.Thing
您可能混淆了联接别名和列别名。联接中的subselect类似于它自己的表,您也可以从BigList中选择不同的列,因此我的版本中的SomeThingTab类似于一个虚拟的动态表
SELECT * FROM
(SELECT DISTINCT Thing as SomeThing FROM BigList) AS SomeThingTab
LEFT JOIN thingDetail ON SomeThingTab.SomeThing = thingDetail.Thing
您可能混淆了联接别名和列别名。联接中的subselect类似于它自己的表,您也可以从BigList中选择不同的列,因此我的版本中的SomeThingTab类似于一个虚拟的动态表
SELECT * FROM
(SELECT DISTINCT Thing as SomeThing FROM BigList) AS SomeThingTab
LEFT JOIN thingDetail ON SomeThingTab.SomeThing = thingDetail.Thing
几乎在发布之后,我立刻意识到别名表名和来自该表名的列名都需要存在——这就是我试图做的。在真实的例子中,由于清晰的原因,我选择了DISTICT foo FROM bar作为foo。。。因此造成了混乱。@WaltStoneburner,没关系。。。发布后,我几乎立刻意识到别名表名和该表名中的列名都需要存在,这正是我想要做的。在真实的例子中,由于清晰的原因,我选择了DISTICT foo FROM bar作为foo。。。因此造成了混乱。@WaltStoneburner,没关系。。。一直在发生,是的,这正是我在做的。规则为self,列和实际代码中的别名不要使用相同的别名:是的,那正是我在做的。规则为self,列和实际代码中的别名不要使用相同的别名: