任何人都可以告訴我什麼是相同值的聚合函數max的結果? 假設我有一個creation_date列作爲varchar2包含日期。如果我嘗試max(creation_date)什麼是結果,它將如何選擇row.Is如果在where子句子查詢中使用this,行是可預測的還是不可行?oracle中導致的聚合函數11g
完整的查詢是這樣的。
從my_table創建ID,其中create_date =(從我的表中選擇max(create_date));
任何人都可以告訴我什麼是相同值的聚合函數max的結果? 假設我有一個creation_date列作爲varchar2包含日期。如果我嘗試max(creation_date)什麼是結果,它將如何選擇row.Is如果在where子句子查詢中使用this,行是可預測的還是不可行?oracle中導致的聚合函數11g
完整的查詢是這樣的。
從my_table創建ID,其中create_date =(從我的表中選擇max(create_date));
不太清楚你想達到什麼目的。 讓我們說有一個表my_table,其數據如下所示。 (注意最後兩行在日期列中有相同的數據)
SQL> select * from my_table;
CREATE_ID CREATE_DATE CREATE_DATE_VARCHAR
---------- ------------------- --------------------
1 1996-07-25 00:00:00 1996-07-25 00:00:00
2 1997-07-26 00:00:00 1997-07-26 00:00:00
3 2013-07-26 00:00:00 2013-07-26 00:00:00
4 2013-07-26 00:00:00 2013-07-26 00:00:00
如果執行select * from my_table where create_date_varchar=(Select max(create_date_varchar) from my_table);
,那麼你會得到2條(ID 3和4)
CREATE_ID CREATE_DATE CREATE_DATE_VARCHAR
---------- ------------------- --------------------
3 2013-07-26 00:00:00 2013-07-26 00:00:00
4 2013-07-26 00:00:00 2013-07-26 00:00:00
如果你只需要一個被然後拿起你可以使用ROWNUM = 1 select * from my_table where create_date_varchar=(Select max(create_date_varchar) from my_table) and ROWNUM = 1;
那麼你將得到1個結果(無論是3或4,這可以通過使用順序子句來控制)
檢查:http://sqlfiddle.com/#!4/8d75a/3
請參閱Max Function 要了解更多有關排序的工作原理是指NLS_SORT和 Why does Oracle's varchar sort order not match the behavior of varchar comparison?
謝謝你......這就是我想知道的。 – user3004656
@ user3004656而這與我在評論中對你的回答完全相同。然而,考沙爾做了一個不錯的額外努力爲你打造一個完整的例子。 –
你想實現什麼?如果你想獲得最新的日期,那麼'MAX(create_date)'不會給你想要的。您將需要首先將'varchar2'轉換爲'date'。 –
好吧..你給我提示。我只想知道如何oracle集合函數選擇任何行如果每個值都相同 – user3004656
它會返回其中一個值(它將始終返回一個值),但是沒有辦法預測它們中的哪一個會返回。例如:'SELECT MAX(col)FROM tbl'其中'tbl.col'具有值(1,2,1,4),它將返回1.現在是第一行還是第三行的1?沒辦法告訴。 –