Mysql 常见错误集锦

文章列举了四个在使用MySQL时常见的错误,包括1)非聚合列未在GROUPBY中;2)每个派生表需有自己的别名;3)不合法的使用组函数;4)IN操作符后的表达式应包含单个列。解决方案涉及正确使用聚合函数如AVG和MIN,为子查询指定别名以及确保IN条件符合语法规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此篇收集一些mysql经常容易犯的小错误。

目录

1. 错误代码:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregate

2. 错误代码: 1248 Every derived table must have its own alias

3. 错误代码: 1111 Invalid use of group function

4. 错误代码:Operand should contain 1 column(s)


1. 错误代码:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregate

先看查询语句

 SELECT salary
 FROM employees
 GROUP BY department_id

改正

 SELECT AVG(salary )
 FROM employees
 GROUP BY department_id

在select中添加了聚合函数,这是由于在以部门号进行聚合过后,没有相应的聚合操作,即经过

 GROUP BY department_id

聚合过后,答案没有进行处理,应该有相应的求最大值最小值平均值之类的操作。

2. 错误代码: 1248 Every derived table must have its own alias

先看查询语句

SELECT MIN(sal)
 FROM(SELECT AVG(salary) sal
 FROM employees
 GROUP BY job_id ) 

错误提示已经恨明显了,每个得到的表都应该有它自己的名字,在From后加上表的别名就可以了

改正:

SELECT MIN(sal)
 FROM(SELECT AVG(salary) sal
 FROM employees
 GROUP BY job_id ) avg_sal

3. 错误代码: 1111 Invalid use of group function

看代码

SELECT MIN(AVG(salary) )
FROM employees
GROUP BY job_id 

mysql中不能聚合函数嵌套,可以嵌套一层,先用子查询实现AVG

改正:

SELECT MIN(sal)
 FROM(SELECT AVG(salary) sal
 FROM employees
 GROUP BY job_id )  avg_sal

4. 错误代码:Operand should contain 1 column(s)

看代码

select university
from user_profile 
where device_id in (select q.device_id,count(q.device_id)
                    from question_practice_detail q
                    group by q.device_id)

原因是in条件后面有多个字段,in后面只能有一个字段。

改正

select university
from user_profile 
where device_id in (select q.device_id
                    from question_practice_detail q
                    group by q.device_id)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值