我有一個表像some_table
的Oracle SQL GROUP BY 「不是一個GROUP BY表達式」 幫助
+--------+----------+---------------------+-------+
| id | other_id | date_value | value |
+--------+----------+---------------------+-------+
| 1 | 1 | 2011-04-20 21:03:05 | 104 |
| 2 | 2 | 2011-04-20 21:03:04 | 229 |
| 3 | 3 | 2011-04-20 21:03:03 | 130 |
| 4 | 1 | 2011-04-20 21:02:09 | 97 |
| 5 | 2 | 2011-04-20 21:02:08 | 65 |
| 6 | 3 | 2011-04-20 21:02:07 | 101 |
| ... | ... | ... | ... |
+--------+----------+---------------------+-------+
而且我要爲other_id
1
,2
和3
最新記錄。我想出了明顯的查詢是
SELECT id, other_id, MAX(date_value), value
FROM some_table
WHERE other_id IN (1, 2, 3)
GROUP BY other_id
但是它吐出一個「not a GROUP BY expression
」異常。我嘗試在GROUP BY
子句中添加所有其他字段(即id
,value
),但這只是返回所有內容,就好像沒有GROUP BY
子句一樣。 (好吧,它也有道理。)
所以......我正在閱讀Oracle SQL手冊,我能找到的只是一些只涉及兩列或三列查詢以及一些我沒有預先分組功能。我如何去和返回
+--------+----------+---------------------+-------+
| id | other_id | date_value | value |
+--------+----------+---------------------+-------+
| 1 | 1 | 2011-04-20 21:03:05 | 104 |
| 2 | 2 | 2011-04-20 21:03:04 | 229 |
| 3 | 3 | 2011-04-20 21:03:03 | 130 |
+--------+----------+---------------------+-------+
(每個other_id
的最新條目)?謝謝。
優秀!這就像一個魅力! – 2011-04-28 08:19:37
爲什麼不使用MAX聚合? – Benoit 2011-04-28 08:22:36
@Benoit,'order by date_value desc'做同樣的事情 – 2011-04-28 08:32:47