例如,我有以下查询(请参阅How to produce a result set based on the comparison of values between two fields?):
select id,
case nickname when '' then full_name else nickname end as new_name
from your_table
添加最后一行
时出现语法错误select id,
case nickname when '' then full_name else nickname end as new_name
from your_table
where new_name = 'Jen'
我可以使用WHERE
语句过滤掉结果集吗?
答案 0 :(得分:4)
您需要使用子查询:
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'
答案 1 :(得分:2)
我使用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'
或者,您可以使用子查询。在我发布此回复之后,我想到了这一点,而肯·怀特打败了我!我检查了一个本地数据库,两种方法的执行计划是相同的,尽管你的里程可能会有所不同。
答案 2 :(得分:2)
如果你在“select * from(...)”中删除第一个语句,你应该可以使用new_name字段名
ie - 使用子查询