我有一个适用于 MySQL 但不适用于 Oracle 的查询,我正在尝试转换。这是我的桌子:
unique_row_id  http_session_id  page_name   page_hit_timestamp
----------------------------------------------------------------
0              123456789        index.html  2010-01-20 15:00:00
1              123456789        info.html   2010-01-20 15:00:05
2              123456789        faq.html    2010-01-20 15:00:15
3              987654321        index.html  2010-01-20 16:00:00
4              987654321        faq.html    2010-01-20 16:00:05
5              987654321        info.html   2010-01-20 16:00:15
6              111111111        index.html  2010-01-20 16:01:00
7              111111111        faq.html    2010-01-20 16:01:05
8              111111111        info.html   2010-01-20 16:01:15
SQL是
select http_session_id, unique_row_id, page_name, page_hit_timestamp 
from page_hits 
group by http_session_id;
在 MySQL 上,这将返回 3 行(每个唯一的 http_session_id 一个)。
在 Oracle 上,我收到“ORA-00979:不是 GROUP BY 表达式”错误。我也尝试过使用 distinct ,但我无法让它工作。
为了清楚起见 - 我想要一个每个唯一 http_session_id 包含一行的 ResultSet。最好 unique_row_id 是最大值(例如 http_session_id==123456789 为 2),但这并不重要。
我即将将其分解为多个单独的 sql 语句(一个“选择不同的 http_session_id”,另一个迭代所有这些并选择 max(unique_row_id)。任何指针都将不胜感激 - 我很想避免这!
Rgds,凯文。