2

我需要使用该IN子句获得一组结果,但默认排序已完成并返回结果。有没有办法维护 db2 中 in 子句的顺序?

ORDER BY FILED将是 MySQL 中的解决方案,但在 DB2 中是否有等价物?

4

2 回答 2

0

据我了解,您想要这样做:

select foo from table where bar in (3, 1, 2);

并按项目栏匹配的顺序。iebar = 3首先出现,然后是1,然后是2。

我认为在 DB2 中没有内置的方法可以做您想做的事情。

但是,请查看这个最近的问题,其中讨论了解决方法。

于 2013-03-06T09:03:47.843 回答
0

如果您希望按特定顺序获得结果,ORDER BY 就是这样做的。除非您使用 ORDER BY,否则 SQL 不保证顺序。结果集的排序顺序与您选择在任何 IN() 子句中列出项目的方式之间没有任何关系。IN() 子句与它无关。

请注意,在没有 ORDER BY 的情况下,任何时候都可能获得特定的排序顺序,这完全是靠运气。但是,不能保证。如果行随时间发生变化,则可能会在没有警告的情况下显示不同的排序顺序。

这是一种 SQL 行为,而不是 DB2。DB2 只是按照 SQL 的预期工作方式来处理这种行为。

于 2014-03-19T14:24:50.263 回答