在oracle中选择* group by

时间:2014-09-11 08:19:09

标签: oracle

我如何在oracle中编写这个简单的mysql等价物?

select * from table group by column

在灌浆时似乎不接受星形炭,但当表中有30多列时,逐个选择列是不切实际的。

3 个答案:

答案 0 :(得分:4)

select * from table
WHERE rowid in
(SELECT MIN(rowid)
FROM table
GROUP BY column);

答案 1 :(得分:1)

您需要明确提及要为其分组的列名称。因此,Oracle中的SQL将是:

select column_list from table group by column_list

,或者

select few/any columns from table group by same columns + more columns

另外,请记住select中的column_list必须至少以相同的顺序出现在group by子句中。您可以选择较少的列,但仍按这些列和其他列进行分组。

例如,

select ename from emp group by ename,sal

答案 2 :(得分:0)

如果您想要与例如MySQL,您需要使用聚合函数,例如oracle中的MAX或MIN函数。不幸的是,我知道获取整行(而不是来自不同行的随机字段值)的唯一方法是将值连接在一起:

SELECT
    col_to_group_by,
    MAX(col_1 || ', ' || col_2 || ', ' || col_3 || ', ' || col_4) row_values
FROM table_name
GROUP BY col_to_group_by