Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 是否可以在同一查询中对使用AS关键字形成的字段执行WHERE?_Mysql_Sql - Fatal编程技术网

Mysql 是否可以在同一查询中对使用AS关键字形成的字段执行WHERE?

Mysql 是否可以在同一查询中对使用AS关键字形成的字段执行WHERE?,mysql,sql,Mysql,Sql,例如,我有以下查询(请参阅): 我在添加最后一行时遇到语法错误 select id, case nickname when '' then full_name else nickname end as new_name from your_table where new_name = 'Jen' 我可以用WHERE语句过滤掉结果集吗?我已经有一段时间没有使用MySQL了,但是试试看 select id, case nickname when '' then ful

例如,我有以下查询(请参阅):

我在添加最后一行时遇到语法错误

select id,
       case nickname when '' then full_name else nickname end as new_name
from your_table
where new_name = 'Jen'

我可以用
WHERE
语句过滤掉结果集吗?

我已经有一段时间没有使用MySQL了,但是试试看

select id, 
       case nickname when '' then full_name else nickname end as new_name 
from your_table 
where case nickname when '' then full_name else nickname end = 'Jen'

或者,您可以使用子查询。在我发布这条回复后,我突然想到了这一点,肯怀特打败了我!我检查了一个本地数据库,两种方法的执行计划都是相同的,尽管您的里程可能会有所不同。

我已经有一段时间没有使用MySQL了,但是请尝试一下

select id, 
       case nickname when '' then full_name else nickname end as new_name 
from your_table 
where case nickname when '' then full_name else nickname end = 'Jen'

或者,您可以使用子查询。在我发布这条回复后,我突然想到了这一点,肯怀特打败了我!我检查了一个本地数据库,两种方法的执行计划都是相同的,尽管您的里程数可能会有所不同。

如果您在“select*from(…)中使用第一条语句,您应该能够使用新的\u name fieldname


ie-使用子查询

如果您在“select*from(…)”中使用第一条语句,您应该能够使用新的\u name字段名


ie-使用子查询

您需要使用子查询:

select t.id, t.new_name from
(select id,
   case nickname when '' then full_name else nickname end as new_name
from your_table) t
where t.new_name = 'Jen'

您需要使用子查询:

select t.id, t.new_name from
(select id,
   case nickname when '' then full_name else nickname end as new_name
from your_table) t
where t.new_name = 'Jen'

我认为您需要将第一条语句包装在一个“select*from”中,即-使用子queryeah。不幸的是,我收到了错误消息
错误代码:1054。“where子句”中的未知列“new_name”
很抱歉,我没有注意到您提到的语法错误,因此不久就更改了我的名称。我的错。我想你需要将第一条语句包装在“select*from”中,即-使用子查询。很遗憾,我收到了错误消息
错误代码:1054。“where子句”中的未知列“new_name”
很抱歉,我没有注意到您提到的语法错误,因此不久就更改了我的名称。我的错。