oracle select distinct order by 同時使用的問題
Oracle 11g資料庫,執行下面語句出現錯誤“ORA-01791: 不是 SELECTed 表示式”:
select distinct name from Share_URL_Seeds order by id
原來:SELECT語句中含有DISTINCT關鍵字或者有運算子時,排序用欄位必須與SELECT語句中的欄位相對應。
原因:
在ORDER BY中指定多個列,結果將先按照子句中的第一列排序,然後第二個,依此類推。
在SELECT中未出現的列名也可用於ORDER BY 子句中,只要TABLE中有就行。
但如果SELECT子句中出現了DISTINCT關鍵字,則只能用出現過的列名,
而且如果SELECT子句中使用了任何運算子,在ORDER BY 子句中必須保持和SELECT子句中表達式完全一致,否則出現錯誤:“ORA-01791: 不是 SELECTed 表示式”。
如果想按照id排序,而又使name不重複,可用以下sql語句:
SELECT distinct name, min(id) as b FROM Share_URL_Seeds where Type=1 group by name order by b;
相關推薦
oracle select distinct order by 同時使用的問題
Oracle 11g資料庫,執行下面語句出現錯誤“ORA-01791: 不是 SELECTed 表示式”: select distinct name from Share_URL_Seeds order by id 原來:SELECT語句中含有DISTINCT關鍵字或者有運算子時,排序用欄位必須與SELE
Oracle 中distinct 和order by 同時使用,可能出現的問題
事例在Oracle資料庫中執行SQL: select distinct name from tableName order by id 原本想過濾name欄位重複值,並按照id進行排序,但是SQL報錯,無法執行。 原因:SELECT語句中含有DISTINCT關
mysql中group by和order by同時使用無效的替代方案
前言 最近一年由於工作需要大部分使用的都是NoSql資料庫,對關係型資料庫感覺越來越陌生,一個由group by和order by 引發的血案由此而生。在此做個記錄,以備不時之需。 需求(得到所有barCode的最新的一條資料) 首先,看一下整體的表結構。
Oracle教程(5)-order by的使用
1要對工資大於1500的薪水進行排序,先排序 然後排序 加入需要倒敘的話 注意:如果使用了order by,則order by則一定是最後一個字句。 在order by中使用別名和表示式 通過表示式排序 通過別名排序,加上雙引號 在oerder by中使用列好進行排列,使用多列
oracle 關於 union+order by+ rownum分頁問題
SELECT * FROM ( SELECT
mysql 用 group by 和 order by同時使用
首先,這是不可能實現的 mysql的查詢的順序 select -> from-> where->group by->having->order by. 但mysql的解析器執行順序: from-> where->group by->having->
GROUP BY ORDER BY 同時使用按時間排序
需要:合併相同使用者名稱,公司按逗號分隔。並且要按新增修改時間排序。 網上查了一下 GROUP BY ORDER BY 想要同時使用 ,ORDER BY 中的欄位一定要在GROUP
oracle查詢使用order by變慢的優化
oracle版本10.1.0 一條簡單的sql,在pl/sql裡執行,表裡共有20多w條記錄: select * from table (1s) select * from table order by date_report desc (18s) 加上order by d
SELECT IN ORDER BY CHARINDEX (排序)
DECLARE my_cursor CURSOR SCROLL DYNAMIC SELECT UserID,SupplierID FROM SupplierFollower WHERE IMeetSupplierID IN(182231,182233,182234,
Oracle中使用Order By排序時結果順序不穩定的解決辦法
Oracle的分頁查詢是沒有進行任何排序操作的,Oracle是順序的從資料塊中讀取符合條件的資料返回到客戶端。 而Oracle的排序演算法不具有穩定性,也就是說,對於排序鍵值相等的資料,這種演算法完成
Oracle中的order by分頁排序問題
今天在系統測試的過程中,測試人員發現自己新新增的科目新增到系統中在頁面預設分頁查詢中沒有找到自己新加的科目(分頁過程中頁面顯示資料確實和資料表中的資料總量一致),但是通過系統的搜尋功能是可以查詢的到資料?提了一個bug? 解決bug的過程: 系統中有一個科目表subject
sql中當order by 和distinct同時使用
在sql中當order by和distinct同時使用時,如果指定了 SELECT DISTINCT,那麼 ORDER BY 子句中的項就必須出現在選擇列表中。例如: select distinct id from table_name order
如果指定了 SELECT DISTINCT,那麼 ORDER BY 子句中的項就必須出現在選擇列表中。(sqlserver中)
1:sqlserver中如果用order by,同時用了distinct的話,order by後面的欄位就必須出現在selcet的欄位中。 select distinct FullName from users order by Id 上述 SQL 語句是不對的,
Oracle使用row_number() over (partition order by)和DISTINCT去除重複記錄
最近做的一個模組涉及到8張表的聯合查詢,由於這8張表中有很多主從表的關聯,結果在使用模糊查詢的時候查詢結果集出現了重複記錄。如下:
如果指定了 SELECT DISTINCT,那麼 ORDER BY 子句中的項就必須出現在選擇列表中。(解決方法及原因分析)
解決辦法:sqlserver中如果同時用order by和distinct,那order by後面的欄位就必須出現在selcet的欄位中。這個問題只有在sqlserver中才會有,mysql中是不會有這
同時使用DISTINCT和ORDER BY
一般情況下,這兩個語句是不能同時使用的,但是可以通過group by的語句來規避SQL報錯。select OLORD from OpenQuery(APPDEV, 'select * from ATDATA.I3ORDLP1') where I3SEQ = 0 and I3U
NumberFormatException: Invalid int類型不匹配異常——使用SQL數據庫查詢語句select * from blacknumber order by _id desc limit ?,20;出現
rom add ray 修改 java turn 技術分享 data color 異常:類型不匹配 05-06 08:12:38.151: E/AndroidRuntime(14904): java.lang.NumberFormatException: Invalid i
select in排序 mysql select in (array) order by array
mysql1、substring_index(不準確):SELECT * FROM `tvmars_channel` WHERE `name` IN (‘張藝謀‘,‘1080P‘,‘香港電影‘,‘好萊塢‘,‘喜劇電影‘,‘動作電影‘) order by substring_index(‘張藝謀,1080P,香
mysql ORDER BY,GROUP BY 和DISTINCT原理
如果 str reat 個數 需要 是我 如何 where子句 三種 前言 除了常規的Join語句之外,還有一類Query語句也是使用比較頻繁的,那就是ORDERBY,GROUP BY以及DISTINCT這三類查詢。考慮到這三類查詢都涉及到數據的排序等操作,所以我將他們放在