如何在DB2中使用IN子句时保留结果的顺序?

时间:2013-03-06 05:22:10

标签: sql db2

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

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

2 个答案:

答案 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的工作方式来处理这种行为。