A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

九月半

中级黑马

  • 黑马币:45

  • 帖子:7

  • 精华:0

© 九月半 中级黑马   /  2016-7-3 20:37  /  4390 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
大神们求助.关于该怎么查询带有特殊意义的字段.譬如字段是avg(xxx),好像mysql给看成一个函数的,不认为是字段名.我该怎么用查找方法显示字段?
首先,我创建了一个表,里面录入了成绩,代码如下:
create database testdb2;
use testdb2;
create table test1(
coursename varchar(40),
score int
);
insert into test1 values('语文',98);
insert into test1 values('语文',78);
insert into test1 values('数学',79);
insert into test1 values('数学',69);
insert into test1 values('数学',90);
insert into test1 values('英语',80);
insert into test1 values('英语',90);

这是表1的内容:

然后,我根据课程名分组,求平均分创建了一个表格.
代码如下:
create table test2(select coursename,avg(score) from test1 group by coursename);
这是表2的结构和内容:




问题来了,我如果单独查询平均分的字段的话,用 select avg(score) from test2代码的话就会报错如下:
ERROR 1054 (42S22): Unknown column 'score' in 'field list'
mysql会默认avg(score)这个字段是一个函数,我该怎么查询avg(score)这个字段呢?
我琢磨的解决方案是这样的.
用别名创建平均分的表格:
create table test3(select coursename,avg(score) as avg from test1 group by coursename);
创建表格的内容就是这样.

这样就解决了这个问题.
可是,我的问题是我该怎么查询avg(score)这个字段下列的内容呢?有什么转义的方法么?

最佳答案

查看完整内容

大致理解了你的问题,不使用别名的解决办法: (1)理论知识: 在Mysql中,当表名或字段名乃至数据库名和保留字冲突时,在sql语句里可以用撇号(`)括起来(键盘左上角和~是同一键,不是单引号)。 (2)数据库语句: select `avg(score)` from test2; (3)实现结果截图:

5 个回复

倒序浏览
本帖最后由 ImKing 于 2016-7-5 16:30 编辑

大致理解了你的问题,不使用别名的解决办法:
(1)理论知识:
在Mysql中,当表名或字段名乃至数据库名和保留字冲突时,在sql语句里可以用撇号(`)括起来(键盘左上角和~是同一键,不是单引号)。
(2)数据库语句:
select `avg(score)` from test2;
(3)实现结果截图:

点评

Thanks! mysql数据库的相关知识就才讲了一天,就是基础的增删查改...长知识了  发表于 2016-7-5 20:04
回复 使用道具 举报
大神们在哪里啊
回复 使用道具 举报
ImKing 发表于 2016-7-3 20:37
大致理解了你的问题,不使用别名的解决办法:
(1)理论知识:
在Mysql中,当表名或字段名乃至数据库名和保 ...

不过还是谢谢,谢谢你的支持,谢谢黑马币,一起加油! {:3_57:}
回复 使用道具 举报
关键字变成字段名加上``(Esc下面那个符号)就行了比如order-->`order`
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马