按预定义顺序返回查询结果
在 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中文网其他相关文章!