需要Mysql查询设计帮助

时间:2013-11-27 10:49:48

标签: mysql

有这个mysql查询

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

我的问题是,在table2中,一个CE.codreg可能有多行,并且只需要选择具有该行的最大CO.id的那一行CE.codreg

我该怎么办?

1 个答案:

答案 0 :(得分: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

如果你想要table1中的行,即使table2中没有记录

,也试试这个
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