mysql 分组查询 不合并_为什么MySQL允许没有聚合功能的“分组”查询?

惊喜-这是MySQL中完全有效的查询:

select X, Y from someTable group by X

如果您在Oracle或SQL Server中尝试了此查询,则会收到自然错误消息:

Column 'Y' is invalid in the select list because it is not contained in

either an aggregate function or the GROUP BY clause.

那么MySQL如何确定每个X显示哪个Y?它只是选择一个。据我所知,它只是选择找到的第一个Y。理由是,如果Y既不是聚合函数也不在group by子句中,则在查询中指定“ select Y”是没有道理的。因此,作为数据库引擎的我将返回我想要的任何东西,而您会喜欢它。

甚至还有一个MySQL配置参数来关闭这种“松散性”。 http://dev.mysql.com/doc/refman/5.7/zh-CN/sql-mode.html#sqlmode_only_full_group_by

这篇文章甚至提到MySQL在这方面被批评为不符合ANSI-SQL。 http://www.oreillynet.com/databases/blog/2007/05/debunking_group_by_myths.html

我的问题是: 为什么 MySQL以这种方式设计?他们打破ANSI-SQL的理由是什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值