别名需要在mysql union中具有唯一的名称

时间:2014-08-29 23:18:30

标签: mysql sql

我做了以下事情,似乎没有遇到任何问题。在与UNION结合的不同查询中使用相同的别名是不恰当的吗?

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;

2 个答案:

答案 0 :(得分:4)

union的单独部分被视为单独的子查询。您可以在两者中对表使用相同的别名,因此在编写查询时没有问题。无论后续子查询中的名称如何,列的名称都来自union中的第一个子查询。

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

答案 1 :(得分:1)

不,没关系。这些查询具有不同的范围,因此它将起作用。

但是,例如,赢了

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

现在你尝试引入两次别名' a'进入相同的范围。

经验法则:如果您正在做一些不允许的事情:MySQL会告诉您。如果它有效,那就没关系了。就那么简单。 :)