2013-04-18 37 views
1

如果MySQL遇到相同的列名和别名,那么其中一个或另一个是否优先?例如MySQL,相同的别名和列名,优先?

select NODE1 as `NODE2`, NODE2 as `NODE1` where `NODE2`=? 

请问上面的查询总是匹配的占位符 NODE1(标签 NODE2)?换句话说,标签总是优先吗?

如果是这样,所有SQL数据库都是如此吗?

+0

两个引号,你会发现,MySQL的是,相较于其他的数据库非常宽容,并允许许多简单的事情,别人绝对禁止。 –

回答

6

您不能在WHERE子句中使用别名,因此列名在此处很重要。

可以在查询选择列表中使用别名,使列名称为 不同的名称。 您可以使用GROUP BY别名,ORDER BY或HAVING 子句来引用列:

标准SQL不允许在WHERE子句中的列别名引用。 此限制是强加的,因为WHERE子句为 评估时,列值可能尚未确定。

C.5.5.4. Problems with Column Aliases