如何在使用group by时获取特定记录

时间:2016-03-10 05:31:51

标签: mysql

我有两列的表,例如table_data

id    value
1       2
1       5
1       4

select * from table_data group by id

但我得到的输出是1 1 ..但实际上我希望这个输出为我的欲望例子1 4或1 5 ...... 怎么弄???

5 个答案:

答案 0 :(得分:0)

将MAX与GROUP BY一起使用:

select id, MAX(value) from table_data group by id

如果您需要组中的任何值出现在结果集中,那么只需GROUP BY即可。但是你需要知道,输出行是未确定的。

通常,它处理的第一行将被放入表示其组的输出中。

以下是一个演示:

mysql> create table table_data(id int, value int);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into table_data values (1,4),(1,5),(1,2);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM table_data;
SEL+------+-------+
| id   | value |
+------+-------+
|    1 |     4 |
|    1 |     5 |
|    1 |     2 |
+------+-------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM table_data GROUP BY id;
+------+-------+
| id   | value |
+------+-------+
|    1 |     4 |
+------+-------+
1 row in set (0.00 sec)

答案 1 :(得分:0)

您可以使用聚合函数,您可以从中获取最大值MAX function

SELECT id, MAX(value) 
FROM table_data 
GROUP BY id

答案 2 :(得分:0)

通过id

从table_data组中选择id,max(value)

这将返回1,5

通过id

从table_data组中选择id,min(value)

这将返回1,2。

在这种情况下,1,4是不可能的。

答案 3 :(得分:0)

SELECT id, MAX(value) 
FROM table_data 
GROUP BY id

答案 4 :(得分:0)

select m.id,m.value from
(SELECT * FROM table_data order by field(value,4,2,5))m
group by m.id

我们可以得到我们想要的任何输出......

通过制作