黑马程序员技术交流社区

标题: mysql数据库字段带符号的问题 [打印本页]

作者: 九月半    时间: 2016-7-3 20:37
标题: mysql数据库字段带符号的问题
大神们求助.关于该怎么查询带有特殊意义的字段.譬如字段是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)这个字段下列的内容呢?有什么转义的方法么?

作者: ImKing    时间: 2016-7-3 20:37
本帖最后由 ImKing 于 2016-7-5 16:30 编辑

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

作者: 九月半    时间: 2016-7-4 18:47
大神们在哪里啊
作者: ImKing    时间: 2016-7-5 20:47
ImKing 发表于 2016-7-3 20:37
大致理解了你的问题,不使用别名的解决办法:
(1)理论知识:
在Mysql中,当表名或字段名乃至数据库名和保 ...

不过还是谢谢,谢谢你的支持,谢谢黑马币,一起加油! {:3_57:}
作者: 695010894    时间: 2016-8-12 11:36
关键字变成字段名加上``(Esc下面那个符号)就行了比如order-->`order`




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2