我有一个使用 DataTables 和服务器端处理的 webapp。我有一些 SQL 查询可以任意重新组合列中的数据,所以我得到这样的查询:
SELECT case `column`
WHEN 'value1' then 'group1'
WHEN 'value2' then 'group1'
ELSE `column` END AS `column grouped`, SUM(`2010`)
GROUP BY `colonne grouped`
现在,我添加了一些基于用户输入的过滤,我喜欢这样:
SELECT case `column`
WHEN 'value1' then 'group1'
WHEN 'value2' then 'group1'
ELSE `column` END AS `column grouped`, SUM(`2010`)
GROUP BY `column grouped`
HAVING `column grouped` LIKE '%test%'
它仍然可以正常工作,但是当我试图让整个事情变得不敏感时,我的麻烦就来了,所以我这样做了:
SELECT case `column`
WHEN 'value1' then 'group1'
WHEN 'value2' then 'group1'
ELSE `column` END AS `column grouped`, SUM(`2010`)
GROUP BY `colonne grouped`
HAVING UPPER(`column grouped`) LIKE '%test%'
现在我得到“#1054 - '有子句'中的未知列'列分组'”
作为一种解决方法,我做这样的事情:
SELECT case `column`
WHEN 'value1' then 'group1'
WHEN 'value2' then 'group1'
ELSE `column` END AS `column grouped` , SUM(`2010`)
GROUP BY `colonne grouped`
HAVING UPPER(case `column`
WHEN 'value1' then 'group1'
WHEN 'value2' then 'group1'
ELSE `column` END) LIKE '%test%'
但这并不是很方便。任何人都知道为什么我不能将 UPPER 与自定义别名一起使用?
顺便说一句,我正在使用 MySQL 5.5。