需要 MySQL 查询设计帮助

标签 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 可能有多于一行,并且只需要选择具有该 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/

相关文章:

mysql - 数据库设计/mysql

mysql - 显示出现次数最多的值

php - 如何在 tcpdf 的一个输出中组合多个语句

mysql - 派生表和汇总的结果列宽度

mysql - 如何使用 sQlite 获取每组的最大值直到它返回零

php - 如何在表单验证中使用数据库数据?

java - hibernate 中的 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException

java - SQL 语法错误,准备好的语句,无详细信息

mysql - 如何在不引用父级的情况下对子级进行级联删除

php - 3个日期范围之间的Mysql查询