首页 > 解决方案 > 带有 WHERE 子句和 MAX 函数的 SQL 选择

问题描述

我见过类似的问题,但没有一个涉及许多 WHERE 子句。

有没有更有效的方法来实现以下目标(z/OS 上的 DB2),理想情况下没有 WHERE 子句重复?

SELECT *
FROM     TABLE

WHERE     Value1        =   "A"
   AND    Value2        =   "B"
   AND    Tran-No       =    123
   AND    Seq-No        =  (SELECT MAX(Seq-No)

                              FROM Table

                             WHERE    Value1        =  "A"
                               AND    Value2        =  "B"
                               AND    Tran-No       =  123)

基本上有许多行与“WHERE”标准匹配,并且只应返回具有最高 Seq-No 的行。上述方法有效,但有更好的选择吗?

标签: sqldb2where-clause

解决方案


似乎你可以这样做:

  SELECT Seq-No
    FROM TABLE
   WHERE Value1  = "A"
     AND Value2  = "B"
     AND Tran-No = 123
ORDER BY Seq-No DESC
   LIMIT 1

获得第一个最高Seq-No值?


推荐阅读