我需要使用IN
子句获取一组结果,但是完成了默认排序并返回结果。有没有办法维护db2中的in子句的顺序?
ORDER BY FILED
将是MySQL的解决方案,但在DB2中是否存在等价物?
答案 0 :(得分:0)
据我了解,你想这样做:
select foo from table where bar in (3, 1, 2);
和项目栏匹配的顺序。即bar = 3
首先出现,然后是1,然后是2.
我认为没有一种内置方法可以在DB2中执行您想要的操作。
但是,请查看this recent question,其中讨论了解决方法。
答案 1 :(得分:0)
如果您想要特定订单的结果,ORDER BY是如何做到的。除非您使用ORDER BY,否则SQL不保证订单。结果集的排序顺序与您选择在任何IN()子句中列出项目的方式之间没有任何关系。 IN()子句与它无关。
请注意,在没有ORDER BY的情况下,可以随时获得特定的排序顺序。但是,不能保证。如果行随时间变化,则可能会显示不同的排序顺序而不会发出警告。
这是一种SQL行为,而不是DB2。 DB2只是按照SQL的工作方式来处理这种行为。