在MySQL有以下MySQL的像甲骨文GROUPBY我如何
drop table tab1;
CREATE TEMPORARY TABLE tab1
(col1 integer,col2 integer(10),col3 varchar(10),col4 integer)engine=memory
insert into tab1
values(100,1,'Hello',9);
insert into tab1
values(200,1,'HelloWrld',8);
insert into tab1
values(300,1,'HelloTher',7);
insert into tab1
values(400,2,'HiThere',6);
insert into tab1
values(500,3,'Howdy',5);
insert into tab1
values(600,3,'Hiya',4);
select col1,col2,col3,col4,min(col4)
from tab1
group by col2
'100', '1', 'Hello', '9', '7'
'400', '2', 'HiThere', '6', '6'
'500', '3', 'Howdy', '5', '4'
結果在Oracle沿fdllowing查詢我想同樣的結果在MySQL
with tab1 as (
select 100 col1, 1 col2, 'Hello' col3,9 col4 from dual
union all
select 200 col1, 1 col2, 'HelloWrld' col3,8 col4 from dual
union all
select 300 col1, 1 col2, 'HelloTher' col3,7 col4 from dual
union all
select 400 col1, 2 col2, 'HiThere' col3,6 col4 from dual
union all
select 500 col1, 3 col2, 'Howdy' col3,5 col4 from dual
union all
select 600 col1, 3 col2, 'Hiya' col3,4 col4 from dual
)
select min(col1),col2,min(col3),col4,min(col4)
from tab1
group by col2,col4
Result I get is this
MIN(COL1) COL2 MIN(COL3) COL4 MIN(COL4)
---------- ---------- --------- ---------- ----------
100 1 Hello 9 9
200 1 HelloWrld 8 8
500 3 Howdy 5 5
600 3 Hiya 4 4
300 1 HelloTher 7 7
400 2 HiThere 6 6
我想什麼有這是
'100', '1', 'Hello', '9', '7'
'400', '2', 'HiThere', '6', '6'
'500', '3', 'Howdy', '5', '4'
我如何實現Mysql像gro在 我無法得到這,這是我想解決的長查詢
MySQL的結果是[indeterminate](http://dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html) 。 – 2012-07-20 15:45:00
你到底在做什麼?這兩個查詢有不同的'group by'子句。你是否想要獲得每列,一列或其他內容的最小值? – 2012-07-20 15:49:05
@MarkByers - 在我看來,這是最糟糕的行爲之一。我想我寧願有一些特殊的語法來表示(比如說'GROUP BY col1,HIDDEN(col2)'或其他),以使行爲更加明確。事實上,如果你錯誤地輸入了一些東西,你的結果可能會很糟糕,甚至不會提示你。 – 2012-07-20 15:51:10