gpt4 book ai didi

mysql - 为什么 MySQL 与 SQLServer 的工作方式不同,允许使用 GROUP BY 子句的多列

转载 作者:行者123 更新时间:2023-11-29 03:20:15 24 4
gpt4 key购买 nike

在这个方案中http://sqlfiddle.com/#!9/71f86a/1 ,建立在 MySQL 上,我做了一个查询,获取所有按寄存器号分组的记录。在我看来,它是无效的,因为我带来了一个按寄存器编号分组的非聚合列。

代码如下:

create table client 
(id int not null auto_increment,
city varchar(50),
register int,
primary key(id));

insert into client (city, register) values ('SP', 111);
insert into client (city, register) values ('MG', 111);
insert into client (city, register) values ('ES', 111);
insert into client (city, register) values ('SP', 111);
insert into client (city, register) values ('SP', 222);
insert into client (city, register) values ('MG', 222);
insert into client (city, register) values ('SP', 333);

查询 select * from client group by register 返回:

id  city    register
1 SP 111
5 SP 222
7 SP 333

在这个其他方案中http://sqlfiddle.com/#!6/5b1ba1/1 ,基于 SQLServer 构建,错误“列‘client.id’在选择列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中。”按照我说的返回。

代码如下:

create table client 
(id int identity(1,1) primary key,
city varchar(50),
register int);

insert into client (city, register) values ('SP', 111);
insert into client (city, register) values ('MG', 111);
insert into client (city, register) values ('ES', 111);
insert into client (city, register) values ('SP', 111);
insert into client (city, register) values ('SP', 222);
insert into client (city, register) values ('MG', 222);
insert into client (city, register) values ('SP', 333);

相同的先前查询 select * from client group by register 返回:

Column 'client.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

为什么 MySQL 更宽松?这不会带来不良结果吗?

最佳答案

Why MySQL is more permissive? Could not this bring unwanted results?

对于不属于 GROUP BY 子句的未聚合列,它无疑会返回不确定 结果。更多厌倦的数据库开发人员,包括我自己,一直认为这按设计损坏(BAD)而不是宽容

MySQL 的默认行为在几年前的 5.7.5 版本中发生了变化。您在 sqlfiddle.com 上的查询使用 5.6 版。 5.7.5 版使 MySQL 在 GROUP BY 方面更接近标准 SQL。

关于mysql - 为什么 MySQL 与 SQLServer 的工作方式不同,允许使用 GROUP BY 子句的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46457377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com