Code Bye

数据库查询的group by 的不清楚的地方

 1)关于group by 的一些基础问题,看了资料不是很明白。

是不是group by后面的字段必须在select 列后面出来?
下面是一个表的内容

但是本人用这个sql语句查询:
select phone from tb_user group by name
这个group by 只有name,而且select 后面跟的phone。这样为什么还是可以查出来呢?

这个和上面说的完全不一样?还是本人理解错误?
2)用sql: select * from tb_user group by name 查询的结果集:

把相同名字的归为一组。那么名字相同的为一条记录。但是他们会有不同的id。这个结果集只显示一个id.(到底会显示哪一个id呢?它是怎么处理的?)
3)用sql:select * from tb_user group by name where name=””张三””  查询会出现语法错误:

这个怎么解释?
脑子不好使
解决方案:25分
是不是group by后面的字段必须在select 列后面出来?
不是
解决方案:10分
1. 说法是针对 MSSQL 可以的,严格 语法 ,MYSQL 可以不用,扩展了,有时候会出现意想不到的结果。
2. ID将是你的NAME相同的第一条
3. 那是基本语法,WHERE 要在GROUP BY 前面
解决方案:5分
上面不是标准SQL,标准SQL用group by的时候必须要加 avg sum 等归并函数的。你的是mysql的扩展sql,要看你的mysql是什么版本,再查扩展的文档了,总之,不建议这么用,除非必须要用。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明数据库查询的group by 的不清楚的地方