我有一个包含6列的表
No, Id, Created, Snapshot, Note, Size
请参阅屏幕截图以了解表格结构。
我想选择注意的行,例如"默认"并且否具有最大值。请注意,Note可能包含几个相同的值,例如"默认"
这可能是一个非常基本的问题。但已经问过了。但我找不到任何对我有用的东西。到目前为止,我尝试过: -
SELECT *
FROM Mytable
WHERE Note = 'defalut' AND No = (SELECT MAX(No) FROM Mytable)
我没有结果。请让我知道如何获得它。提前致谢!
答案 0 :(得分:1)
以下是使用Max Over()
窗口函数
SELECT *
FROM (SELECT *,
MaxNo = Max(No)OVER()
FROM Mytable
WHERE Note = 'default') a
WHERE No = MaxNo
答案 1 :(得分:0)
在这种情况下,您可以使用ROW_NUMBER()
来获取最大的No
SELECT No, Id, Created, Snapshot, Note, Size
FROM
(
SELECT *,
RN = ROW_NUMBER () OVER (ORDER BY No DESC)
FROM MyTable
WHERE Note = 'default'
) a
WHERE RN = 1
但是,如果No
对于所有行都是唯一的,则只需在子查询中删除添加Note
过滤器
SELECT No, Id, Created, Snapshot, Note, Size
FROM Mytable
WHERE No = (SELECT MAX(No) FROM Mytable WHERE Note = 'default')
答案 2 :(得分:0)
你几乎是正确的:
SELECT *
FROM Mytable
WHERE Note = 'default' AND No = (SELECT MAX(No) FROM Mytable WHERE Note = 'default')