MySQL中不允许使用列别名作为查询条件
2013-09-22 17:03
621 查看
在MySQL中有个特殊的规定,即不允许使用列别名作为查询条件。比如有下面一个表:
select
ID,
title,
concept,
conceptLength,
addUserId,
modifyTime
from collections_wisdom
将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
之所以MySQL中不允许使用列别名作为查询条件,据说是因为MySql中列的别名本来是返回结果的时候才显示的,不在SQL解析时候使用。在没有更令人信服的解释出现前,权且当做这样吧。
select
ID,
title,
concept,
conceptLength,
addUserId,
modifyTime
from collections_wisdom
将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
之所以MySQL中不允许使用列别名作为查询条件,据说是因为MySql中列的别名本来是返回结果的时候才显示的,不在SQL解析时候使用。在没有更令人信服的解释出现前,权且当做这样吧。
相关文章推荐
- MySQL中不允许使用列别名作为查询条件
- mysql使用别名作为查询条件的两种方式,必有一种适合你
- mysql使用别名作为查询条件的两种方式,必有一种适合你
- MySql使用全记录3 -----以中文作为查询条件时结果为空的原因以及两个MySql小知识点(varchar、单双引号)
- mysql: 两个字段合并,字符时间转时间戳,别名字段作为where条件查询
- Hibernate 使用 HQL 查询 使用List 作为查询条件的注意(也是相当于别名查询)
- mysql 使用count(),sum()等作为条件查询
- mysql在把子查询结果作为删除表中数据的条件,mysql不允许在子查询的同时删除原表数据
- SQL语句Where中使用别名作为判断条件
- 关于mysql 数据库使用spring 2.0低版本 JdbcTemplate.queryForList 查询结果别名不起作用的解决方法
- ADO.NET select语句使用变量作为属性值的条件查询
- MySQL中使用case when 语句实现多条件查询的方法
- MySQL种字符串拆分(substring_index)并作为关联查询条件后多列展示
- MySQL中使用case when 语句实现多条件查询的方法
- mysql 以查询结果作为查询条件sql写法
- mysql分组查询结果集作为条件查询的问题
- MySql查询IF和CASE条件判断使用
- MySQL种字符串拆分(substring_index)并作为关联查询条件后多列展示
- 使用SQL查询语句时,数组动态赋值SQL IN ()作为条件条件一个
- 【mysql】 mysql 子查询必须使用别名!!!