我想知道如何爲使用順序的sql語句打印行號。 目前我試過ROWNUM
,但據我瞭解,它只適用於未排序的結果集。Oracle:使用'order by'子句顯示行號
SELECT rownum, a.lg_id, a.full_name, a.sort_order
FROM activity_type_lang a
where a.lg_id = 'en'
order by a.full_name;
TIA
我想知道如何爲使用順序的sql語句打印行號。 目前我試過ROWNUM
,但據我瞭解,它只適用於未排序的結果集。Oracle:使用'order by'子句顯示行號
SELECT rownum, a.lg_id, a.full_name, a.sort_order
FROM activity_type_lang a
where a.lg_id = 'en'
order by a.full_name;
TIA
除了嵌套查詢,你可以使用的解析函數
SELECT row_number() OVER (ORDER BY a.full_name),
lg_id,
full_name,
sort_order
FROM activity_type_lang a
WHERE a.lg_id = 'en'
ORDER BY a.full_name
使用分析功能也使得如果你想改變的關係如何處理更容易。您可以用RANK或DENSE_RANK
替換ROW_NUMBER
。
哦。似乎我已經找到了一個解決方案。
Select rownum, lg_id, full_name, sort_order from
(SELECT a.lg_id, a.full_name, a.sort_order
FROM activity_type_lang a
where a.lg_id = 'en'
order by a.full_name);
ROWNUM在訂貨前應用,所以你必須重寫查詢是這樣的: 選擇ROWNUM,XXX * FROM(SELECT a.lg_id,a.full_name,a.sort_order FROM activity_type_lang一個 其中a.lg_id ='en' order by a.full_name )xxx;
你好。我不知道我怎麼能打印 行號爲sql語句,其中是 使用順序。目前我嘗試ROWNUM ,但據我瞭解,它只適用於 未排序的結果集。
要清楚(有人可能會弄錯它)。它確實工作(但不是你期望的方式)。問題在於,它會在排序之前「附加」ROWNUM ,並且您將獲取記錄,但不會記錄在連續的ROWNUM記錄中。爲什麼?由於
符合其中 標準select語句是 給出的rownum = 1
這真是很好的例子選擇/順序機制是如何工作的第一條記錄。