【问题标题】:Max Query Sybase最大查询 Sybase
【发布时间】:2014-06-02 11:55:18
【问题描述】:

我有表格“内容”:

content_id , relative_sortorder
1          1
2          1
3          2
4          3
**5          4**
6          1
7          2
8          ...
9          100

我想做一个查询,通过选择 max(relative_sortorder) 来返回之前的 content_id,并且它需要低于当前的 relative_sortorder。

我不知道,请帮忙:)

这仅返回最大值 -

选择最大值(c.relative_sortorder) 来自“DBA”。“内容”c WHERE c.relative_sortorder

但我需要上一行

好的,所以我有这些结果,我想过滤它们以仅显示具有最大 relative_sortorder 的结果,在本例中为第二行。我不知道如何创建子查询

【问题讨论】:

  • 您应该使用所需的结果和您尝试过的任何查询来编辑您的问题。
  • 附带说明,如果你的 id 是自动生成的,你不应该做像content_id < 5 这样的事情——值和相对顺序是没有意义的。实际上,所有代理 ID 都是如此。当使用应该改变“较少”关系的非关键数据更正该行时会发生什么?附带说明一下,您的预期结果和示例数据似乎不匹配 - 请确保它们相关。

标签: sql sybase


【解决方案1】:

如果我做对了,请尝试使用 TOP n 功能。

SELECT TOP 1 content_id
  FROM "DBA"."CONTENT" 
  WHERE relative_sortorder < 4
  ORDER BY relative_sortorder DESC

【讨论】:

    【解决方案2】:

    使用这个查询,希望对你有用。

     select content_id from content  
       where  content_id < current_content_id 
         and relative_sortorder = (select max(current_sortorder) 
           as maxorder from content where maxorder <  current_relative_sortorder )
    

    【讨论】:

      猜你喜欢
      • 2019-03-20
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      相关资源
      最近更新 更多