我有表有兩列例如TABLE_DATA如何獲得特定的記錄,而使用GROUP BY
id value
1 2
1 5
1 4
select * from table_data group by id
,但我得到的輸出爲1個1..but其實我想這個輸出我的願望例如1 4或1 5 ... 如何獲得?
我有表有兩列例如TABLE_DATA如何獲得特定的記錄,而使用GROUP BY
id value
1 2
1 5
1 4
select * from table_data group by id
,但我得到的輸出爲1個1..but其實我想這個輸出我的願望例如1 4或1 5 ... 如何獲得?
使用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)
在上面的查詢中,它只會返回最大值...但我想要所有可能的值... –
@madeit更新了帖子。請檢查。 –
您聲明「我想要所有可能的值」,但正在使用「group by」。 「group by」的定義與該陳述相反。除非您想要連接三個「值」條目,以便返回:「id = 1,value = 2,5,4」。 –
可以使用聚合函數使用這個,你可以從它那裏得到MAX function
SELECT id, MAX(value)
FROM table_data
GROUP BY id
選擇ID,MAX(值)的最大值由ID TABLE_DATA組
這將返回1,5
選擇ID,分鐘(ⅴ alue)from table_data group by id
這將返回1,2。
在這種情況下,1,4是不可能的。
SELECT id, MAX(value)
FROM table_data
GROUP BY id
select m.id,m.value from
(SELECT * FROM table_data order by field(value,4,2,5))m
group by m.id
我們可以得到任何我們想要的輸出...
通過使其
不羣的ID –
請註明這是SQL服務器或MySQL和還提供更多樣本數據。 – FLICKER
不能是MS SQL,它會返回一個語法錯誤。 – Shadow