一个相当复杂的SQL查询我工作让我思考(ANSI)SQL的限制:
有没有一种方法来检索记录是最大或最小相对于任意排序?
换一种说法:
鉴于这样的查询:
SELECT * FROM mytable WHERE <various conditions> ORDER BY <order clause>
是否有可能写(通过变换顺序条款到别的可能)只返回第一行查询?
我知道你可以做到这一点使用LIMIT(MySQL的)/ ROWNUM(甲骨文)或类似的,但是这不是标准的SQL。
我也知道,你可以通过在子查询中获取最大/最小值你有兴趣做这个(使用MIN()/ MAX()),然后使用该结果作为你的主要选择,即一个标准:
SELECT * FROM mytable WHERE <various conditions> AND myMaxColumn=(
SELECT MAX(myMaxColumn) FROM mytable WHERE <various conditions>
)
但是,只有当我想通过一个单一的列进行排序工作。 我看没有办法推广为多列(比嵌套上述溶液等,但由n个coluns订货时,这将意味着2 ^ n指定)。
那么,有没有标准SQL更好的方式比嵌套多个子选择?
一个相关的问题是问在创建一个SQL查询来获取最近的记录 。 然而,问题的答案有建议或者使用LIMIT和朋友,或者使用子查询与MAX()如上所述,这两者是不是我的问题的解决方案。