2013-11-27 75 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