2014-08-29 70 views
0

我做了以下工作,似乎没有遇到任何问题。在与UNION结合的不同查询中使用相同的别名是不合适的?别名在mysql工会中需要有唯一的名字

SELECT table1.a,t.b,t.c 
FROM table1 
INNER JOIN table2 AS t ON t.table1_id=table1.id 
WHERE t.fk=123 
SELECT table2.a,t.b,t.c 
UNION 
FROM table3 
INNER JOIN table4 AS t ON t.table3_id=table3.id 
WHERE t.fk=123; 
+0

我认为该查询不起作用。但是,对于UNION和别名,除了sintaxis:'WHERE ... SELECT ... UNION'应该是'WHERE ... UNION SELECT ...' – Aguardientico 2014-08-29 23:21:54

回答

4

union一个的单独的部件被视为单独的子查询。你可以在两个表中使用相同的别名,所以查询没有问题。无论后续子查询中的名称如何,列的名称都来自union中的第一个子查询。

对于MySQL和其他数据库也是如此。

1

不,这很好。这些查询有不同的范围,所以它会起作用。

但对此,例如不会:

select * 
from 
    Table1 a 
    inner join Table2 a .... 

现在你尝试引入别名两次“A”到同一范围。经验法则:如果你正在做的事情是不允许的:MySQL会告诉你。如果有效,那就没问题。就那么简单。 :)