如何在Oracle 11g中使用ORDER BY和LIMIT 1准备SQL查询?

我需要为Oracle 11g数据库准备此查询,但是它与此版本不兼容:

SELECT * FROM CLIENTS WHERE UPPER(NOMBRE) LIKE ? ORDER BY NUM DESC LIMIT 1;

使用ORDER BY NUM DESC LIMIT 1,我只希望第一个结果的最大值为“ NUM”

在Oracle 11g中还有其他选择吗?

谢谢!

评论
  • 我是歌手
    我是歌手 回复

    One way is use rownum pseudo column

    SELECT *
    FROM
    (
        SELECT * 
        FROM clients 
        WHERE UPPER(nombre) LIKE ? 
        ORDER BY num DESC
    )
    WHERE rownum = 1;
    
  • 冷血动物
    冷血动物 回复

    You could use ROW_NUMBER here:

    SELECT *
    FROM
    (
        SELECT c.*, ROW_NUMBER() OVER (ORDER BY NUM DESC) rn
        FROM CLIENTS c
        WHERE UPPER(NOMBRE) LIKE ?
    ) t
    WHERE rn = 1;