兼容的Mysql中SQL语句Groupby错误使用问题分析

分类:编程技术 时间:2024-02-20 16:12 浏览:0 评论:0
0
本文与大家分享Mysql中SQL语句Groupby错误使用问题的分析及其兼容性。小编觉得还是比较实用的,所以分享给大家,作为参考。下面就跟随小编来看看吧。

首先创建数据库hncu并创建stud表。

添加数据:

创建表stud(sno varchar(30) not null 主键,sname varchar(30) not null,age int, saddress varchar(30));INSERT INTO Stud VALUES('1001','Tom',22,'湖南益阳');INSERT INTO Stud VALUES('1002','Jack',23,'益阳');INSERT INTO Stud VALUES('1003','李白',22,'益阳');INSERT INTO Stud VALUES('1004','王舞',24,'中国北京');INSERT INTO Stud VALUES('1005' ,'张三',22,'益阳');INSERT INTO Stud VALUES('1006','张四',23,'益阳');INSERT INTO Stud VALUES('1007','李四',22, '湖南益阳');INSERT INTO Stud VALUES('1008','刘备',24,'北京');

执行语句如下:

<喎�"/kf/ware/vc/" target="_blank" class="keylink" >vcD4NCjxwcmUgY2xhc3M9"brush:sql;"> SELECT * FROM Stud GROUP BY saddress;

显示以下错误:< /p>

错误 1055 (42000):SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列“hncu.stud.sno”,该列在功能上不依赖于中的列GROUP BY 子句;这与sql_mode=only_full_group_by不兼容

再次执行这句:

SELECT saddress asaverageage FROM Stud GROUP BY saddress;
< p>-没问题

然后我们使用MySQL,然后执行之前的错误代码:

即:

 SELECT * FROM Stud GROUP BY saddress;

我们看一下结果:

成功通过了,但是有没有发现前面三列smo、sname、age的数据错了?这是正确的。 ,MySQL强制显示第一次找到的不同saddress的行! ! !实际上,这个结果是错误的,但是MySQL应该兼容这个错误!

但是DOS严格遵循SQL的语法。

SQL的group by语法是,select从表名group by分组列中选择分组+聚合函数中的列

从语法格式上看,先有分组,再确定要搜索的列。需要搜索的列只能在参与分组的列中选择。

所以题中先确定group by后的a,b,c。选择后的A、b、c可以更改。也就是说,

以下语句是正确的:

select a,b,c from table_name group by a,b,c,d;select a ,b from table_name group by a,b,c;select a,max(a) from table_name group by a,b,c;

下列说法错误的是:

select a,b,c from table_name group by a,b;select a,b,c from table_name group by a;

由于MySQL的强大功能,它兼容这个呃糟糕! ! !

但这在 DOS 中是不可能的。因此,在DOS下出现错误但在MySQL中可以搜索到(实际上这个搜索的结果是错误的)。

感谢您的阅读!这里分享的这篇文章是《Groupby兼容的Mysql中SQL语句使用错误问题分析》。希望以上内容能够给大家带来一些帮助,让大家能够学到更多的知识。如果您觉得文章不错,请转发,让更多的人看到!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 兼容的Mysql中SQL语句Groupby错误使用问题分析

用户评论