我想知道是否可以在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%';
正确的语法是什么?
答案 0 :(得分:2)
(引用的副本不是很重复,因为它不是特定于MySQL。)
你的问题的答案是你永远不能使用:
SELECT name AS NAMESS, age
from user AS MEN
where MEN.NAMESS LIKE '%Cortan%';
除非NAMESS
是user
中的列。你可以做一个子查询:
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.
是可选的,但如果您有多个表,则强烈建议使用合格的列名。