我得到了一个列| id | postNumber |
的表。一个或多个条目属于一个postNumber
。我需要为每个postNumber
请求最新的条目。
SELECT `dienstbuch`.`id` , `dienstbuch`.`postNumber`
FROM `dienstbuch`
WHERE `dienstbuch`.`id`
IN (
SELECT max( `dienstbuch`.`id` )
FROM dienstbuch
GROUP BY `dienstbuch`.`postNumber`
)
ORDER BY `id` DESC
LIMIT 2000,10
在具有许多条目的表上使用时,查询将花费很长时间。
我该如何改善?
最佳答案
听起来好像您可以在一次直接查询中请求最大ID
SELECT max( `dienstbuch`.`id` ) maxId, postNumber
FROM dienstbuch
GROUP BY `dienstbuch`.`postNumber`
但是,如果要检索几个字段,则需要一个子查询
SELECT `dienstbuch`.`id` , `dienstbuch`.`postNumber`, dienstbuch.field1, dienstbuch.field2
FROM `dienstbuch`
JOIN
(SELECT max( `dienstbuch`.`id` ) id, postNumber
FROM dienstbuch
GROUP BY `dienstbuch`.`postNumber`
) maxID
on dienstbuch.id=maxID.id and dienstbuch.postNumber=maxID.postNumber
ORDER BY dienstbuch.`id` DESC
LIMIT 2000,10
关于mysql - mysql-替代IN(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22002219/