2 arvin ghost Arvin_ghost 于 2015.06.21 01:44 提问

想知道SQL group by的一个问题。小白求教。。

比如现有表Ad_inf
_id name describe
1 test1 d1
2 test2 d2
3 test2 d2
4 test2 d3
5 test3 d2
6 test4 d4

执行select * from Ad_inf group by name,describe 得到的是什么样的?

11个回答

yhl_jxy
yhl_jxy   2015.06.21 08:49
已采纳

select * from Ad_inf group by name,describe
如果你是使用oracle查询,这个句子会报错。
group by 的字段需要在sql中查询出来,分组字段可以不用聚合,如果报错,根据错误提醒就能搞定,
建议查找group by 知识点实践一下,例如:
select min( _id),name,describe from Ad_inf group by name,describe
得到的结果跟你写出的结果一样。

yhl_jxy
yhl_jxy 回复Arvin_ghost: product_name price
2 年多之前 回复
yhl_jxy
yhl_jxy 回复Arvin_ghost: product_name price
2 年多之前 回复
Arvin_ghost
Arvin_ghost 哦哦,是不是只会输出相同记录的第一条结果?是不是只要使用group by一个字段 之后不管怎样就不会再出现几条这一字段相同的记录的情况了而是会进行舍弃或其他操作?
2 年多之前 回复
Arvin_ghost
Arvin_ghost 还没有系统地学习数据库,就是当我看到group by 然后 用sum函数可以合并integer的值,就很好奇如果按照一个字段分组,但是其他字段都是字符串的话会得到什么结果
2 年多之前 回复
sdiver
sdiver   2015.06.21 01:59

应该还是你现在查的格式,.group by一般是用在sum,count这样的函数里面的

Arvin_ghost
Arvin_ghost 是不是只会输出相同记录的第一条结果?是不是只要使用group by一个字段 之后不管怎样就不会再出现几条这一字段相同的记录的情况了而是会进行舍弃或其他操作?
2 年多之前 回复
Arvin_ghost
Arvin_ghost 还没有系统地学习数据库,就是当我看到group by 然后 用sum函数可以合并integer的值,就很好奇如果按照一个字段分组,但是其他字段都是字符串的话会得到什么结果
2 年多之前 回复
frank_20080215
frank_20080215   2015.06.21 06:06

group by一般要用sum,count这样的聚合函数

fengqilove520
fengqilove520   2015.06.21 07:20

这个地方要报错,建议你看看相关的书籍

Arvin_ghost
Arvin_ghost 是不是只会输出相同记录的第一条结果?是不是只要使用group by一个字段 之后不管怎样就不会再出现几条这一字段相同的记录的情况了而是会进行舍弃或其他操作?
2 年多之前 回复
Arvin_ghost
Arvin_ghost 还没有系统地学习数据库,就是当我看到group by 然后 用sum函数可以合并integer的值,就很好奇如果按照一个字段分组,但是其他字段都是字符串的话会得到什么结果
2 年多之前 回复
lenayoung2
lenayoung2   2015.06.21 10:37

group by name,首先要看你的name是定义什么以及如何定义的,我之前在SQL Sever中做的实验是定义商场名,这条语句的执行结果会将对应结果按字母顺序排列。至于你的describe我不是很懂

tongyi55555
tongyi55555   2015.06.21 10:55

我们需要注意的一点,如果在返回集字段中,这些字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。我们可以将Group By操作想象成如下的一个过程,首先系统根据SELECT 语句得到一个结果集,如最开始的那个水果、出产国家、单价的一个详细表。然后根据分组字段,将具有相同分组字段的记录归并成了一条记录。这个时候剩下的那些不存在于Group By语句后面作为分组依据的字段就有可能出现多个值,但是当前一种分组情况只有一条记录,一个数据格是无法放入多个数值的,所以这里就需要通过一定的处理将这些多值的列转化成单值,然后将其放在对应的数据格中,那么完成这个步骤的就是聚合函数。这就是为什么这些函数叫聚合函数(aggregate functions)了。--百度百科

u010032372
u010032372   2015.06.21 16:12

会报错 select * from Ad_inf group by name,describe
一般group by 会配合聚合函数 count(--) ,avg(--),sum()
select name.describe, count(_id)from Ad_inf group by name,describe 表示 name,describe一样的有多少人

u010032372
u010032372   2015.06.21 16:11

会报错 select * from Ad_inf group by name,describe
一般group by 会配合聚合函数 count(--) ,avg(--),sum()
select name.describe, count(_id)from Ad_inf group by name,describe 表示 name,describe一样的有多少人

sky15732625340
sky15732625340   2015.06.21 21:32

结果应该还是现在的顺序,

huangshaocun
huangshaocun   2015.06.28 19:08

如果是用的 mysql 的话会查出 name 和 describe 各自分组后各自所有相同列值的首条记录列表然后合并成一个新个列表
例:
group by name
id name
1 test1
2 test2
5 test3
6 test4

group by describe
id describe
1 d1
2 d2
4 d3
6 d4

合并后为
group by name,describe
1 test1 d1
2 test2 d2
4 test2 d3
5 test3 d2
6 test4 d4

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片