MySQL中不允许使用列别名作为查询条件
2016-08-15 17:27
465 查看
在MySQL中有个特殊的规定,即不允许使用列别名作为查询条件。比如有下面一个表:
select
ID,
title,
concept,
conceptLength,
addUserId,
modifyTime
from collections_wisdom
![](https://images0.cnblogs.com/blog/162475/201309/22165607-6dc3da32b3cc47e0bc8954259bac52e0.png)
将SQL修改如下:
select
ID+1 as newID,
title,
concept,
conceptLength,
addUserId,
modifyTime
from collections_wisdom
where newID>2
那么,执行起来就会出现异常:StatementCallback; bad SQL grammar
实在要执行,只好把新字段的组成在条件里再实现一遍,如下:
select
ID+1 as newID,
title,
concept,
conceptLength,
addUserId,
modifyTime
from collections_wisdom
where (ID+1)>2
![](https://images0.cnblogs.com/blog/162475/201309/22165939-ed1e94bc19784549a5d16d9fdc5c7730.png)
之所以MySQL中不允许使用列别名作为查询条件,据说是因为MySql中列的别名本来是返回结果的时候才显示的,不在SQL解析时候使用。在没有更令人信服的解释出现前,权且当做这样吧。
select
ID,
title,
concept,
conceptLength,
addUserId,
modifyTime
from collections_wisdom
![](https://images0.cnblogs.com/blog/162475/201309/22165607-6dc3da32b3cc47e0bc8954259bac52e0.png)
将SQL修改如下:
select
ID+1 as newID,
title,
concept,
conceptLength,
addUserId,
modifyTime
from collections_wisdom
where newID>2
那么,执行起来就会出现异常:StatementCallback; bad SQL grammar
实在要执行,只好把新字段的组成在条件里再实现一遍,如下:
select
ID+1 as newID,
title,
concept,
conceptLength,
addUserId,
modifyTime
from collections_wisdom
where (ID+1)>2
![](https://images0.cnblogs.com/blog/162475/201309/22165939-ed1e94bc19784549a5d16d9fdc5c7730.png)
之所以MySQL中不允许使用列别名作为查询条件,据说是因为MySql中列的别名本来是返回结果的时候才显示的,不在SQL解析时候使用。在没有更令人信服的解释出现前,权且当做这样吧。
相关文章推荐
- MySQL中不允许使用列别名作为查询条件
- mysql使用别名作为查询条件的两种方式,必有一种适合你
- mysql使用别名作为查询条件的两种方式,必有一种适合你
- MySql使用全记录3 -----以中文作为查询条件时结果为空的原因以及两个MySql小知识点(varchar、单双引号)
- mysql 使用count(),sum()等作为条件查询
- mysql: 两个字段合并,字符时间转时间戳,别名字段作为where条件查询
- mysql在把子查询结果作为删除表中数据的条件,mysql不允许在子查询的同时删除原表数据
- Hibernate 使用 HQL 查询 使用List 作为查询条件的注意(也是相当于别名查询)
- java中使用mysql查询 条件中含有中文时查询不到结果解决方案
- mysql count(),sum()等作为条件查询
- 在PLSQL中不能使用中文作为查询条件查询数据
- mysql使用查询结果作为临时表
- SQL语句Where中使用别名作为判断条件
- Sql server 查询条件中将通配符作为文字使用
- MySQL中使用case when 语句实现多条件查询的方法
- java中使用mysql查询 条件中含有中文时查询不到结果解决方案
- 使用SQL查询语句时,数组动态赋值SQL IN ()作为条件条件一个
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
- SQL语句Where中使用别名作为判断条件
- 一步步学习Reporting Services(二) 在报表中使用简单的参数作为查询条件