有这个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 可能有多于一行,并且只需要选择具有该 CE.codreg 行的最大 CO.id 的行
我该怎么办?
最佳答案
试试这个:
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
编辑1
如果您想要表 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
编辑2
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
编辑3
试试这个:
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
关于需要 MySQL 查询设计帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20240368/