2013-11-27 122 views
0

有這個MySQL查詢MySQL查詢設計需要幫助

SELECT CE.codreg, CO.id FROM table1 CE left join table2 CO ON CE.codreg=CO.registro ORDER BY CE.codreg ASC 

我的問題是,表2中可以有一個CE.codreg多個行和需要選擇只有具有最大CO.id的一個此行CE.codreg

我該怎麼辦?

+0

看,這個問題是問,每天十幾次。它有點無聊。 – Strawberry

+0

看看我對Bushan評論的最後回覆。 ;) – Hanzo

+0

是的,Bhushan也會很好地閱讀一些最近的類似帖子! – Strawberry

回答

2

試試這個:

SELECT CE.codreg, CO.id 
FROM table1 CE left join table2 CO ON CE.codreg=CO.registro 
where CO.id=(select max(I.id) from table2 I where I.registro=CO.registro) 
ORDER BY CE.codreg ASC 

EDIT1

,如果你想行試試這個從表1即使在表2

SELECT CE.codreg, (select max(I.id) from table2 I where I.registro=CO.registro) 
FROM table1 CE left join table2 CO ON CE.codreg=CO.registro 
ORDER BY CE.codreg ASC 

EDIT2
沒有記錄Edit1將爲每個記錄返回行table2,以避免這是另一種選擇。

select CE.codreg, (select max(I.id) from table2 I where I.registro=CE.registro) 
FROM table1 CE 
ORDER BY CE.codreg ASC 

EDIT3
試試這個:

select SELECT CE.codreg, CO.* 
FROM table1 CE left join (select * from table2 I where I.id=(select max(I2.id) from table2 I2 where I2.registro=I.registro)) CO ON CE.codreg=CO.registro 
ORDER BY CE.codreg ASC 
+0

嗨,首先感謝,但只有選擇與table2匹配的行,但我需要選擇table1的所有寄存器和如果表2匹配(左連接)選擇最大。謝謝 – Hanzo

+0

@Hanzo請參閱'Edit1',並讓我知道如果這不起作用。我在oracle10中試過這個。 – Bhushan

+0

但是這隻能選擇行的最大CO.id,但我需要「SELECT CE.codreg,CO。*」所有的CO的id字段爲max(id)的字段。謝謝 – Hanzo