我如何在oracle中编写这个简单的mysql等价物?
select * from table group by column
在灌浆时似乎不接受星形炭,但当表中有30多列时,逐个选择列是不切实际的。
答案 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