不使用UNION的别名是不正确的?

时间:2011-10-24 22:46:51

标签: mysql

等MySQL查询中

SELECT *
FROM (

SELECT user_id
FROM favorites
WHERE user_id >1
UNION SELECT user_id
FROM favorites
WHERE user_id <9
) AS derived

是不是别名收藏夹表(例如'friends AS f1')我注意到这个查询按预期工作(即返回所有user_id),但我不知道这样做是不好的做法。当我有一些UNION时,如果我不必直接保留所有别名,那么它会让我的查询不那么混乱。什么时候使用别名有一个很好的一般规则(可能是'当使用同一个表的多个实例时'总是使用别名')?

1 个答案:

答案 0 :(得分:5)

您不需要在联合内部使用别名。联合的每个部分本质上都是它自己的查询。

如果在查询中使用相同的表两次或者加入子查询,则只需要别名,否则不需要它(除非您需要它)。

你也不需要外部选择包装器它没有任何用处,甚至可能减慢速度。

(我假设联盟只是一个例子 - 你的where子句可以只用一个查询完成,你可能想要union all。)