我做了以下事情,似乎没有遇到任何问题。在与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;
答案 0 :(得分:4)
union
的单独部分被视为单独的子查询。您可以在两者中对表使用相同的别名,因此在编写查询时没有问题。无论后续子查询中的名称如何,列的名称都来自union
中的第一个子查询。
对于MySQL和其他数据库也是如此。
答案 1 :(得分:1)
不,没关系。这些查询具有不同的范围,因此它将起作用。
但是,例如,赢了
select *
from
Table1 a
inner join Table2 a ....
现在你尝试引入两次别名' a'进入相同的范围。
经验法则:如果您正在做一些不允许的事情:MySQL会告诉您。如果它有效,那就没关系了。就那么简单。 :)