我需要使用该IN
子句获得一组结果,但默认排序已完成并返回结果。有没有办法维护 db2 中 in 子句的顺序?
ORDER BY FILED
将是 MySQL 中的解决方案,但在 DB2 中是否有等价物?
据我了解,您想要这样做:
select foo from table where bar in (3, 1, 2);
并按项目栏匹配的顺序。iebar = 3
首先出现,然后是1,然后是2。
我认为在 DB2 中没有内置的方法可以做您想做的事情。
但是,请查看这个最近的问题,其中讨论了解决方法。
如果您希望按特定顺序获得结果,ORDER BY 就是这样做的。除非您使用 ORDER BY,否则 SQL 不保证顺序。结果集的排序顺序与您选择在任何 IN() 子句中列出项目的方式之间没有任何关系。IN() 子句与它无关。
请注意,在没有 ORDER BY 的情况下,任何时候都可能获得特定的排序顺序,这完全是靠运气。但是,不能保证。如果行随时间发生变化,则可能会在没有警告的情况下显示不同的排序顺序。
这是一种 SQL 行为,而不是 DB2。DB2 只是按照 SQL 的预期工作方式来处理这种行为。