select column1+10 as c1,c1+10 as c2 from table1;
想实现上面的效果,结果在mysql里面报错了,提示找不到c1这个列;

-- 不同的 数据库不一样

一般不支持在select中继续使用别名 或者where语句中使用

如果是在要用 可以尝试是否支持:

select column1+10 as c1,(select c1)+10 as c2 from table1;

但是在orderby groupby 可以使用

---一些解释参考

https://stackoverflow.com/questions/16715504/mysql-define-a-variable-within-select-and-use-it-within-the-same-select/16715618#16715618

https://stackoverflow.com/questions/6081436/how-to-use-alias-as-field-in-mysql

mysql中的SQL语句执行是有一定顺序的,如下:
1. from
2. on
3. join
4. where
5. group by
6. with
7. having
8. select
9. distinct
10. order by
11. limit
一条SQL会经过这11步的,中间的每一步都会生成一张虚拟表,后面的步骤都是在上一张虚拟表中进行筛选与查询的,下面假设,经过了7步也就是经过了having这一步,生成的虚拟表假设为:

id  column1 column2 alias(having后的别名)
1 10 10 aaa
2 20 20 bbb

现在到了SELECT这一步的时候,你的查询字段为 column1+10 as c1, 那么sql解析器在这个虚拟表中可以找到column1这个字段,那么计算和设置别名成功, 现在你要c1+10,它发现这个虚拟表中不存在这个字段,那么就会报错,如果你想这样做:alias as xxx, 那么也不会报错,因为having筛选过后,这个别名字段已经在虚拟表中了,所以其实道理很简单,select的执行顺序是排在第8步的,而select是针对以上几步生成的虚拟表进行操作的,所以你所要使用的字段,如果虚拟表中不存在,那么则会报错,如果楼主的那句SQL硬要执行的话,也只能改成select column1+10 as c1,column1+10+10 as c2 from table1;

mysql select 字段别名是否可以用在 select中或者where中的更多相关文章

  1. Mysql 拼接字段查询语句和join查询拼接和时间查询

    个人平时记录的,有点乱 1.修改时间字段,如果时间字段的类型是date或者是datetime类型的 update 表名 set 时间字段 = DATE_FORMAT(NOW(),'%Y-%m-%d % ...

  2. 总结: MySQL(基础,字段约束,索引,外键,存储过程,事务)操作语法

    1. 显示数据库列表 show databases; # 查看当前所有数据库 show databases \G   #以行的方式显示 2. 在命令行中,执行sql语句 mysql -e 'show ...

  3. Oracle中select使用别名

    1 .将字段用as转换成别名. 2 .直接在字段的名字后面跟别名. 3 .在字段后面用双引号引起的别名.   我的朋友 大鬼不动 最近访客 fhwlj kochiyas 大極星 Alz__ deser ...

  4. Mysql字符串字段判断是否包含某个字符串的方法

    方法一:like SELECT * FROM 表名 WHERE 字段名 like "%字符%"; 方法二:find_in_set() 利用mysql 字符串函数 find_in_s ...

  5. Mysql字符串字段判断是否包含某个字符串的3种方法

    方法一: SELECT * FROM users WHERE emails like "%b@email.com%"; 方法二: 利用MySQL 字符串函数 find_in_set ...

  6. mysql text字段判断是否为空

    mysql text字段判断是否为空 mysql text字段为空select * from `tableName` where `textField` is null or `textField` ...

  7. mysql修改字段的语句写法

    http://www.111cn.net/database/mysql/50678.htm 下面为您介绍的sql语句都是mysql修改字段操作中的一些常用语句,如果您是一个刚刚接触mysql数据库的新 ...

  8. MySql 查询表字段数

    MySql 查询表字段数 SELECT COUNT(*) FROM information_schema.columns WHERE table_schema='test_cases' AND tab ...

  9. MySQL 常用字段类型,介绍及其建表使用方法经验分享

    由于工作的公司没有专业的DBA又经常需要建立各种各种的表来满足自己的业务逻辑,所以经常查看MySQL 手册或者谷歌查看相关资料,所以本人就根据我的工作经验和相关资料来介绍一下MySQL各种字段类型及其 ...

随机推荐

  1. Alpha冲刺报告(11/12)(麻瓜制造者)

    今日已完成 邓弘立: 整合了主页的功能 符天愉: 大致上完成了留言部分的添加,删除,查询功能 江郑: 测试了剩余四个查询,一个添加接口,也搞定了接口说明. 刘双玉: 测试了剩余四个查询,一个添加接口, ...

  2. 关于datatables与jquerUI版本冲突问题

    今天开发项目是,需要用到表格,于是想到,之前的项目中使用过datatables插件,于是就拿了过来,但是发现无法识别 Uncaught TypeError: $(...).DataTable is n ...

  3. 部署weblogic遇到的问题总结

    myeclipse开发的项目,运行在tomcat7上完全正常.部署到weblogic10上就出现了问题,现把问题记录一下: 1.找不到javax/servlet/jsp/jstl/core/Condi ...

  4. 1.Dubbo2.5.3源码编译

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.安装JAVA.Git.Maven 安装过程省略,请自行百度.       2.编译dubbo (1)从ht ...

  5. Vuex状态管理详解

    什么是Vuex 专门为vue应用程序开发的状态管理模式,采用集中式存储管理应用的所有组件的状态(数据),以相应的规则保证状态以一种可预测的方式发生改变 Vuex的作用(什么样的情况下使用Vuex) 多 ...

  6. CSP vs Actor Go vs Erlang

    源于从Erlang到Go的一些思维碰撞,就像当初从C++到Erlang一样,整理下来记于此. Actor Actor模型,又叫参与者模型,其”一切皆参与者(actor)”的理念与面向对象编程的“一切皆 ...

  7. Common lang一些边界方法总结(好记性不如烂笔头,需要慢慢积累).一定要利用好现有的轮子,例如Apache common与Google Guava

    好记性真是不如烂笔头啊!!!! 如下代码: List<String> list = new ArrayList<String>(); list.add("1" ...

  8. mysql 批量修改字段方法

    一.正式环境操作注意事项: .关闭应用访问或者设置数据库只读 mysql设为只读方法: 开启只读: mysql> show global variables like "%read_o ...

  9. JS添加标签效果

    JS添加标签效果 在豆瓣网上添加自己的标签是一种常见的效果,今天也就做了一个简单的demo.由于时间的问题 我不多原理,大家可以试着操作几遍就能明白其中的原理了. JSFiddle的效果如下: 点击我 ...

  10. 接收键盘输入的字符串,用FileWirter类将字符串写入文件,用FileReader类读出文件内容显示在屏幕上

    public class SY63 { public static void main(String[] args) throws Exception { System.out.print(" ...