首页 >数据库 >mysql教程 >如何在不使用 ORDER BY 的情况下按预定义顺序检索 SQL 查询结果?

如何在不使用 ORDER BY 的情况下按预定义顺序检索 SQL 查询结果?

DDD
DDD原创
2024-10-30 04:24:02243浏览

How to Retrieve SQL Query Results in a Predefined Order Without Using ORDER BY?

按预定义顺序返回查询结果

在 SQL 中,除非使用 ORDER 指定,否则通常很难按特定顺序检索查询结果BY 条款。但是,在某些情况下,ORDER BY 子句可能不适用,例如当尝试仅根据特定字段的值以预定顺序检索数据时。

最近的讨论提出了一个场景,其中希望选择 ID(7、2、5、9 和 8)并按照确切的顺序检索它们,而不依赖于任何其他条件。以下查询均以不可预测的顺序返回结果:

SELECT id FROM table WHERE id in (7,2,5,9,8);
SELECT id FROM table WHERE id in (8,2,5,9,7);

通过博客文章发现了一个新颖的解决方案,它优雅地解决了此问题:

SELECT id FROM table WHERE id in (7,2,5,9,8) 
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");

FIND_IN_SET函数用于返回给定集合中指定值的位置。例如,id 7 的位置为 1,id 2 的位置为 2,依此类推。

将 ORDER BY 子句与 FIND_IN_SET 一起应用时,ORDER BY 语句了解位置并有效地对结果进行排序基于指定的值。该解决方案利用 MySQL 中的内部机制来实现所需的预定顺序。

值得注意的是,当无法使用 ORDER BY 子句来指定所需的顺序时,此技术可能是一个有价值的替代方案。

以上是如何在不使用 ORDER BY 的情况下按预定义顺序检索 SQL 查询结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn