有这个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
我该怎么办?
答案 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