我有查詢:甲骨文選擇最多的ID從表返回空值
SELECT MAX(prod_id) FROM products;
它返回,如果有記錄的最大價值。但是,如果我截斷表並運行相同的查詢,我無法獲得max
ID。
我有查詢:甲骨文選擇最多的ID從表返回空值
SELECT MAX(prod_id) FROM products;
它返回,如果有記錄的最大價值。但是,如果我截斷表並運行相同的查詢,我無法獲得max
ID。
如果您截斷表格,表格中沒有剩餘的行。根據定義,Max()在空表上運行時返回NULL ...或者我在這裏錯過了什麼?
我在想...如果prod_id是一個定義的序列,那麼 SELECT prod_id.currval FROM DUAL 將得到您最後使用的數字,也可能是最大取決於序列是如何定義。 – 2012-01-01 18:31:37
是的,通過truncating該表格已刪除其中的所有數據,不需要commit
。因此表中沒有數據,沒有什麼是沒有數據的。
如果你要查詢表的列和懷疑max函數可能返回null,那麼您可以在情況下返回null 0遇到
SELECT NVL(MAX(P.PROD_ID), 0) AS MAX_VAL
FROM PRODUCTS P
這將至少返回0,如果沒有價值遇到您提到的列()
這對我有用,謝謝 – 2017-04-21 06:36:59
由於Gerald P. Wright對一個答案進行了評論,如果id是由序列生成的,則可以使用它來查找該值。 但
SELECT prod_id_seq.currval FROM DUAL
將無法正常工作,因爲工作CURRVAL只有在你獲取與CURRVAL值會話。
所以,
SELECT prod_id_seq.nextval FROM DUAL
可以爲你的解決辦法,但會是一個真的,真的不好解決(如果你的ID有幾次,你會得到增加值)。
如果還取決於序列的緩存。 – Ben 2012-01-03 20:57:48
有沒有什麼辦法可以獲得最大ID如果我截斷表 – user367134 2012-01-01 16:55:21
如果你刪除表中的所有數據,那麼**絕對沒有辦法從表**中獲取任何數據。所以不行。在下面看到兩個答案。我在我的答案中提供了一個到'truncate'文檔的鏈接,所以如果你需要更多關於'truncate'對你的表格有什麼作用的信息,你可以閱讀它。 – Ben 2012-01-01 17:00:24