MySQL:控制组返回的行的选择
在 MySQL 中,检索每个 ID 具有最高版本的行可以是一项复杂的任务。但是,可以采用多种方法来实现此目标。
一种方法是利用子查询:
SELECT * FROM (SELECT * FROM table ORDER BY version_id DESC) t1 GROUP BY t1.id
此子查询按版本 ID 降序对行进行排序每个 ID。随后,主查询按 ID 对排序后的行进行分组。这种方法会在内存中创建一个临时表,但如果 (id, version_id) 列上存在索引,则效率会更高。
另一种策略涉及嵌套查询:
SELECT * FROM (SELECT id, max(version_id) as version_id FROM table GROUP BY id) t1 INNER JOIN table t2 on t2.id=t1.id and t1.version_id=t2.version_id
此查询计算子查询中每个 ID 的最大版本 ID。然后,主查询使用 ID 和 version_id 列将子查询与原始表连接起来,以检索具有最大版本 ID 的行。
这两种方法都提供了为每个 ID 选择具有最高版本 ID 的行的有效解决方案。最合适的方法取决于应用程序的具体要求和性能考虑。
以上是MySQL中如何为每个ID选择版本ID最高的行?的详细内容。更多信息请关注PHP中文网其他相关文章!