Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在子查询上使用别名,然后在on子句中使用它进行左联接_Mysql_Sql_Left Join - Fatal编程技术网

Mysql 在子查询上使用别名,然后在on子句中使用它进行左联接

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子句中,不允许使用别名。并且,从子查询中删除别名会产生一个错误,即需要别名。第二十二条军规 我在网上找到了很多例子,其中

此MySQL SQL语句表示我正在尝试执行的操作,但无效:

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,列和实际代码中的别名不要使用相同的别名: