在查询条件语法中使用别名?

时间:2015-05-25 23:27:02

标签: mysql

我想知道是否可以在aliases条件下使用where

例如:

SELECT name AS NAMESS, age from user AS MEN where MEN.name LIKE '%Cortan%';

试着看起来像这样:

SELECT name AS NAMESS, age from user AS MEN where MEN.NAMESS LIKE '%Cortan%';

正确的语法是什么?

1 个答案:

答案 0 :(得分:2)

(引用的副本不是很重复,因为它不是特定于MySQL。)

你的问题的答案是你永远不能使用:

SELECT name AS NAMESS, age
from user AS MEN
where MEN.NAMESS LIKE '%Cortan%';

除非NAMESSuser中的列。你可以做一个子查询:

SELECT NAMESS, age
from (SELECT u.*, u.name as NAMESS FROM user u) MEN
where MEN.NAMESS LIKE '%Cortan%';

这样可行。

您可以删除MEN.限定条件并使用HAVING子句(这是MySQL扩展名):

SELECT name AS NAMESS, age
FROM user MEN
HAVING NAMESS LIKE '%Cortan%';

或者,你可以做无数其他人做的事情,只需在别名之前引用列/表达式:

SELECT name AS NAMESS, age
FROM user MEN
WHERE MEN.names LIKE '%Cortan%';

MEN.是可选的,但如果您有多个表,则强烈建议使用合格的列名。