3 回答

TA貢獻1860條經驗 獲得超9個贊
該where聲明被執行之前的order by。因此,您所需的查詢是說“ 先行,然后按 t_stamp desc 排序 ”。那不是您想要的。
子查詢方法是在Oracle中執行此操作的正確方法。
如果要在兩個服務器上都可以使用的版本,可以使用:
select ril.*
from (select ril.*, row_number() over (order by t_stamp desc) as seqnum
from raceway_input_labo ril
) ril
where seqnum = 1
外部*將在最后一列中返回“ 1”。您可能需要單獨列出各列以避免這種情況。

TA貢獻1844條經驗 獲得超8個贊
使用ROW_NUMBER()代替。ROWNUM是一個偽列,ROW_NUMBER()是一個函數。您可以了解它們之間的差異,并查看以下查詢的輸出差異:
SELECT * FROM (SELECT rownum, deptno, ename
FROM scott.emp
ORDER BY deptno
)
WHERE rownum <= 3
/
ROWNUM DEPTNO ENAME
---------------------------
7 10 CLARK
14 10 MILLER
9 10 KING
SELECT * FROM
(
SELECT deptno, ename
, ROW_NUMBER() OVER (ORDER BY deptno) rno
FROM scott.emp
ORDER BY deptno
)
WHERE rno <= 3
/
DEPTNO ENAME RNO
-------------------------
10 CLARK 1
10 MILLER 2
10 KING 3
- 3 回答
- 0 關注
- 2131 瀏覽
添加回答
舉報