现在的位置: 首页 > 综合 > 正文

sql server和mysql在group by的select子句实现上的不同之处

2012年09月02日 ⁄ 综合 ⁄ 共 714字 ⁄ 字号 评论关闭

在阅读一篇关于SQL puzzles-36:双重责任的一篇文章时,下载了第二版的sql puzzles,检查时发现,默认情况下,sql servermysql之间的group by处理是不一样的。在sql server中,select列表中的字段要么是group by字段组中的字段,要么就是max/min/sum/常量等。而在mysql中可以支持不在group by中的字段。

例如select name,max(registerdate) as registerdate from registration group by name having count(0)=1;,这是在sql server中的写法,而在mysql中海可以这么写:select name,registerdate as registerdate from registration group by name having count(0) = 1;//表示获取只注册一次的用户名及注册时间,而这个语句在sql server中就不能运行,会报出错误:Msg 8120, Level 16, State 1, Line 1

其实在mysql中可以设置sql_mode的:http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html

不知道对group byselect字句的实现,mysql提供了和sql server不一样的实现,难道它们不是都基于sql92的标准吗?Sql servermysqlgroup by中的select字句上不同的实现,显然mysql提供的灵活性要更高一点。

抱歉!评论已关闭.