group by和distinct之间的区别

时间:2014-06-05 15:24:54

标签: sql

我的表名为n_datatest

这是原始数据 -

rid  | centre  | subcentre |
----------------------------
1    |   1     | 489       |
2    |   1     | 489       |
3    |   1     | 489       |
4    |   1     | 234       |
5    |   1     | 234       |
6    |   2     | 489       |
7    |   2     | 489       |
8    |   2     | 234       |
9    |   2     | 234       |
10   |   2     | 368       |
11   |   2     | 368       |
12   |   3     | 657       |
13   |   3     | 657       |
14   |   3     | 4         |
15   |   3     | 4         |
----------------------------

我在上表中应用了查询 SELECT DISTINCT subcentre,center,rid FROM n_datatest

此查询结果全部为15行但我希望我的数据结果与下面提到的完全相同

我想要输出 -


|subcentre | centre | rid  |
----------------------------
| 489      |  1     |  1   | 
| 234      |  1     |  4   |
| 489      |  2     |  6   |
| 234      |  2     |  8   |
| 368      |  2     |  10  |
| 657      |  3     |  12  |
| 4        |  3     |  14  |
----------------------------

1 个答案:

答案 0 :(得分:0)

distinct在这种情况下不会工作,因为摆脱是不同的。

并且在3个字段中应用了distinct。

从你想要的结果来看,似乎你想要最小的摆脱,而在其他领域是不同的,所以

select  subcentre, centre, min(rid) as rid
from n_dataset
group by subcentre, centre
order by rid

请参阅SqlFiddle

mysql(仅限mysql)允许你做

select rid, subcentre, centre
from table
group by subcentre, centre

但你不知道会检索哪个摆脱。