-
2021-01-19 23:27:46
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;
原文:http://www.cnblogs.com/clphp/p/7815160.html
更多相关内容 -
基本的Select语句和别名使用
2022-01-11 20:48:39DQL数据查询 (Data Qurery LANGUAGE:数据查询语言) 所有的查询操作都用它,Select 简单的查询,复杂的查询他都可以做 ...-- 别名,给结果取一个名字,AS 可以给字段起别名,也可以给表起别名 2 SELECTDQL数据查询
(Data Qurery LANGUAGE:数据查询语言)- 所有的查询操作都用它,Select
- 简单的查询,复杂的查询他都可以做
- 数据中最核心的语言
- 使用频率最高的语句
-- 查询全部的学生, SELECT * FROM student SELECT * FROM result -- 查询指定字段 SELECT `StudentName`,`StudentNo` FROM student -- 别名,给结果取一个名字,AS 可以给字段起别名,也可以给表起别名 2 SELECT `StudentName` AS 学生姓名,`StudentNo` AS 学生学号 FROM student -- 函数 Concat 连接 3 SELECT CONCAT('姓名:', `StudentName`) AS 新名字 FROM student
3.
-
在同一MySQL SELECT语句中使用别名的值
2021-01-19 19:21:18您不能在SELECT中直接使用别名。而是使用用户定义的变量。以下是语法。在这里,@yourAliasName是我们的变量和别名-select@yourAliasName:=curdate()asanyAliasName,concat(‘yourValue.',yourColumnName,'yourValue'...您不能在SELECT中直接使用别名。而是使用用户定义的变量。以下是语法。在这里,@yourAliasName是我们的变量和别名-select @yourAliasName :=curdate() as anyAliasName,concat(‘yourValue.',yourColumnName,' yourValue',@yourAliasName) as anyAliasName from yourTableName;
让我们首先创建一个表-mysql> create table DemoTable
(
Name varchar(40)
);
使用插入命令在表中插入一些记录-mysql> insert into DemoTable values('John Smith');
mysql> insert into DemoTable values('Chris Brown');
mysql> insert into DemoTable values('David Miller');
mysql> insert into DemoTable values('John Doe');
使用select语句显示表中的所有记录-mysql> select *from DemoTable;
这将产生以下输出-+--------------+
| Name |
+--------------+
| John Smith |
| Chris Brown |
| David Miller |
| John Doe |
+--------------+
4 rows in set (0.00 sec)
以下是在同一SQL语句中使用别名值的查询-mysql> select @todayDate :=curdate() as todayDate,concat('Mr.',Name,' The current Date is=',@todayDate) as Result from DemoTable;
这将产生以下输出-+------------+------------------------------------------------+
| todayDate | Result |
+------------+------------------------------------------------+
| 2019-09-08 | Mr.John Smith The current Date is=2019-09-08 |
| 2019-09-08 | Mr.Chris Brown The current Date is=2019-09-08 |
| 2019-09-08 | Mr.David Miller The current Date is=2019-09-08 |
| 2019-09-08 | Mr.John Doe The current Date is=2019-09-08 |
+------------+------------------------------------------------+
4 rows in set (0.00 sec)
-
使用 ABAP Open SQL 的 Select AS 别名,提高代码可读性
2022-03-28 16:17:08SAP ABAP 有些数据库表的...此时编写 ABAP 代码对这个数据库表进行访问的开发人员,可以用 AS,将这些数据库表的字段,定义成更容易懂的别名。 看下面这段代码: SELECT SINGLE spld AS printer, spdb AS output_immediSAP ABAP 有些数据库表的字段名称,对于初学者来说不太友好,例如
USR01
表中的打印参数 SPLD, SPLG, SPDB, SPDA 等等。如果直接应用在 OPEN SQL 里,不熟悉这个数据库表的阅读者,可能会感到有点费解。
此时编写 ABAP 代码对这个数据库表进行访问的开发人员,可以用 AS,将这些数据库表的字段,定义成更容易懂的别名。
看下面这段代码:
SELECT SINGLE spld AS printer, spdb AS output_immediately, spda AS delete_from_spool INTO @DATA(user_print_settings) FROM usr01 WHERE bname = @sy-uname. BREAK-POINT.
上图给 SPLD 字段定义了别名 PRINTER, SPDB 定义了别名 OUTPUT_IMMEDIATELT, SPDB 定义成了 DELETE_FROM_SPOOL, 这样这段代码即使不写注释,也已经达到自描述的效果了:
-
数据库之select时取别名
2018-07-28 13:00:51select 列名 as 列别名,//方法1 列名 列别名,//方法2 from 表名; 这两种取别名方法是所有数据库通用的 取了别名后返回的字段是如何的? 如果你在写应用的时候,把取到的东西放在了Map中,那么你的获取... -
mysql select 查询使用列别名无效问题
2020-11-24 16:29:13select s_username as username from userinfo 结果别名没生效,查询结果还是s_username,而不是username 解决办法: jdbc 5.1.x版本驱动,请在数据库连接url指定 useOldAliasMetadataBehavior=true 即可 如:jdbc:... -
MySQL简单命令和SELECT查询,给字段起别名【MySQL数据库】
2021-11-12 23:05:59给查询的字段起别名【AS】如果起的别名里面有空格怎么办列参可直接数学运算 Java(打卡第六十四天) MySQL数据库 博文不是每天都在发送,但是学习是每天都在进行的,因为不想为写而学,而是为学而写 昨天已经进 -
SQL,select的字段如何取别名
2018-06-15 11:13:11SQL如何取别名 access 多表查询有重复的字段,而且要前台绑定,怎么办?access用 列表+空格+别名可不行! 要这样:SELECT product.id as productId, -
Oracle中select使用别名
2016-05-19 10:14:001 、将字段用as转换成别名。 2 、直接在字段的名字后面跟别名。 3 、在字段后面用双引号引起的别名。 我的朋友 大鬼不动 最近访客 fhwlj kochiyas 大極星 Alz__ ... -
mysql select字段别名 不可以在select 或者where中使用 但是group by 与order by可以使用
2018-04-12 10:08:21mysql select字段别名 不可以在select 或者where中使用 但是group by 与order by可以使用 -
MySQL问题记录之select后面子查询别名失效问题
2020-08-19 18:15:46今天写SQL语句的时候碰到一个问题,select后面子查询别名失效问题. 这是我一开始写的一个代码: SELECT sum( IFNULL( money, 0 ) ) money, salesman_id FROM ( SELECT salesman_id, ( SELECT r.money ... -
MYSQL,在 having 语句可以直接使用 select 语句里起的别名
2022-05-10 13:40:32MYSQL,在 having 语句可以直接使用 select 语句里起的别名 -
mysql中where后为什么不能使用select中定义的别名
2021-02-22 10:15:29mysql中where后为什么不能使用select中定义的别名: 因为mysql中sql语句的书写顺序与执行顺序不同 sql书写顺序:select 查询内容 from 表 where 查询条件 sql执行顺序: from 表 where 查询条件 select 查询... -
为什么 having 的条件表达式可以直接使用 select 后的别名?
2020-04-20 00:44:26转载:...按理说是不能在 having condition 中使用 select list 中的 alias。 … 但是 MySQL 对此作了扩展。 在 MySQL5.7.5 之前的版本,ONLY_FULL_G... -
MySQL8.0中insert、update、select和delete语句中使用别名的问题
2021-12-03 09:31:11查询test_2表id=1的 使用update将test_2的id=1的name更新到test_1的id=2的name字段中 3、select使用别名 SELECT t1.id AS t1_id, t2.id AS t2_id, t1.`name` AS t1_name, t2.NAME AS t2_name FROM test_1 t1 LEFT ... -
SQLite中的SELECT子句使用别名
2018-04-17 10:33:56SQLite中的SELECT子句使用别名开发者可以使用AS关键字为指定的列名提供一个新的别名,其语法形式如下SELECT column_name AS Alias [,…]例如,下面的SQL语句为Name列设置了一个别名StudentName。SELECT id,Name AS ... -
mysql,mybatis中,select时,使用as定义别名
2020-01-07 09:30:25一,情景 当实体类中的字段与表中的字段不匹配时(不符合驼峰等),需要使用as来定义别名。 -
sql server中select语句中取列别名
2016-04-26 08:58:20select列的时候取别名有三种方法,这三种方法并不是所有数据库都适用。 方法一、直接在字段名称后面加上别名,中间以空格隔开。 方法二、以as关键字指定字段别名,as在select的字段和别名之间。 方法三、... -
【sql小坑】在group by里用select字段的别名?
2018-05-30 16:56:00【sql小坑】在group by里用select字段的别名? 背景 -- 求每个用户的拥有的产品数,其中userid需要简单split出来 SELECT split (id, '-') [ 0 ] AS userid, count(DISTINCT productid) AS productid... -
SQL select的字段取别名
2016-07-19 10:21:53select 列的时候取别名有三种方法,这三种方法并不是所有数据库都适用的。 方法一: 直接在字段名称后面加上别名,中间以空格隔开。 方法二: 以as关键字指定字段别名。 方法三: 对于SQL server还提供了另外... -
spark dataframe的select和selectexpr的区别
2020-07-22 16:24:10spark dataframe的select和selectexpr的区别 select是把要遍历的集合ienumerable逐一遍历,每次返回一个t,合并之后直接返回一个ienumerable,而selectmany则把原有的集合ienumerable每个元素遍历一遍,每次返回一个... -
mysql 中的select,from,where,group by等 关键字 执行顺序与别名问题
2021-02-02 16:57:20select,from等关键字执行顺序 参考相关链接原创 SQL 查询的执行顺序是怎样的? 按常规如下: 我们平常写的顺序是这样的: 1. SELECT 2. DISTINCT <select_list> 3. FROM <left_table> 4. <join_... -
yii中select字段时用别名的设置方法
2015-06-19 11:06:05为了避免不必要的链接跳转扰乱我等的心绪,所以我无耻的把文章Copy过来,望佛主原谅~ 在用yii中的ar做数据查询的...$criteria->select = 'title, count(id) as rowNum'; $criteria->group = 'title'; $criteria->order -
Select 子句后的别名,在where条件中不能使用
2017-10-13 21:49:00执行顺序,先执行FROM 子句,然后执行WHERE 子句,最后执行SELECT 所以Select 子句后的别名,在where条件中不能使用 SELECT 控制显示的列, WHERE控制显示的行 模糊查询: "_"表示任意一位字符 "%"表示任意任意位字符 NOT ... -
SQL,Select字段取别名的三种方法
2015-01-27 20:41:06select Emp_Id "EmpId"方法二:以as关键字指定字段别名,as在select的字段和别名之间。select Emp_Id as EmpId方法三:对于SQL Sever还可以利用等号"="指定字段的别名。select EmpId=EmpId 转载于:... -
SQL+WHERE+别名+过滤的问题
2021-11-08 23:36:21)查询数据记录,当在WHERE后用别名做过滤条件时,发生报错" 1054 - Unknown column ‘code’ in ‘where clause’",即“where子句”中的未知列“code””,如图: 为解决上述问题,我们只需要将上面的语句中的... -
MyBatis 如何设置别名
2020-05-10 20:27:14</configuration> //mapper.xml <select id="seleteAllStudent" resultType="Student">//student中的字母可大写可小写,(STudent...) select * from studentMybatis </select> 2、批量设置别名 自动将该包中的... -
SQL(给SELECT出来的结果表 起别名、GROUP BY、HAVING、连接JOIN ON、TOP 1(其实是LIMIT 1))
2020-03-20 22:41:32SELECT deptno FROM emp GROUP BY deptno SELECT deptno, avg(sal) as '部门平均工资' FROM emp GROUP BY deptno ----- 先按部门分组,再按职称分组 HAVING 【对分组后的信息进行过滤】 SELECT deptno... -
为什么mysql having的条件表达式可以直接使用select后的别名?
2017-07-02 21:31:00SQL语句的语法顺序: ... SELECT -> DISTINCT -> UNION -> ORDER BY 因此一般不能在having condition中使用select list中的alias。 但是mysql对此作了扩展。在mysql 5.7.5之前的版本,ONLY_FULL_...