【问题标题】:How to retain the order of results while using a IN Clause in DB2?在 DB2 中使用 IN 子句时如何保留结果的顺序?
【发布时间】:2013-03-06 05:22:10
【问题描述】:

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

ORDER BY FILED 在 MySQL 中是一个解决方案,但在 DB2 中是否有等效方案?

【问题讨论】:

  • 是的:使用 ORDER BY !
  • 感谢您的回复。订购?该列表在任何情况下都是动态的。我通过准备好的语句调用它。可以举个例子吗?
  • 你的意思是在你没有发布的代码中?
  • SELECT POST_ID,POST_TITLE FROM BLOG_POST WHERE POST_ID IN (68,76,72,73);这是要求,我需要以相同的顺序得到结果

标签: sql db2


【解决方案1】:

据我了解,您想这样做:

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

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

我认为在 DB2 中没有内置的方式来做你想做的事情。

不过,请查看 this recent question,其中讨论了解决方法。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-05
      • 2011-08-31
      • 2012-12-17
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 2014-05-12
      相关资源
      最近更新 更多