惊喜——这是MySQL中一个非常有效的查询:
select X, Y from someTable group by X
如果在Oracle或SQL Server中try 此查询,则会收到自然错误消息:
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呢?它只是选了一个.据我所知,它只是 Select 了它找到的第一个Y.理由是,如果Y既不是聚合函数,也不在group by子句中,那么在查询中指定"select Y"就没有意义了.因此,我作为数据库引擎将返回我想要的任何内容,您会喜欢的.
甚至还有一个MySQL配置参数来关闭这种"松散".
本文甚至提到MySQL在这方面被批评为不符合ANSI-SQL标准.
我的问题是:Why是这样设计的吗?他们放弃ANSI-SQL的理由是什么?