0

可以说我有下表:

 SomeTable(
    id, 
    price
 )

如何从该表中选择价格第二高的行?注意:这必须在 Pl/SQL 中以与数据库无关的方式完成。是否可以在没有任何循环的情况下做到这一点?

  1. 我知道这是如何使用 Oracle 结构rownum或 mysql 结构来完成的limit,所以我不是在寻找那些。
4

2 回答 2

1
CREATE TABLE mytable (id NUMBER PRIMARY KEY, price NUMBER NOT NULL);
INSERT INTO mytable VALUES (1, 10);
INSERT INTO mytable VALUES (2, 20);
INSERT INTO mytable VALUES (3, 20);
INSERT INTO mytable VALUES (4, 30);

SELECT id, price 
 FROM (
       SELECT id, price, RANK() OVER (ORDER BY price DESC) AS r
         FROM mytable
      )
 WHERE r=2;

 ID PRICE
--- -----
  2    20
  3    20
于 2012-12-04T10:12:04.817 回答
1

这不是很简单吗?天知道为什么我之前没有考虑过!

select max(price) from tnum where price <> (select max(price) from tnum)

于 2013-01-31T09:29:23.127 回答