1. 程式人生 > >子查詢in 為何不能用order by

子查詢in 為何不能用order by

SELECT * from t_user where id in (select id from t_user order by id)
[Err] ORA-00907: 缺失右括號
SELECT * from t_user where id in (select id from t_user )
這樣就可以?
求原理!!!!

出於效率,ORACLE會對IN子查詢做DISTINCT,而DISTICT本身就要ORDER,且是ASC方式,所以不再支援加ORDER BY子名。

就是沒有意義。。。所以不給加

相關推薦

查詢in 何不能用order by

SELECT * from t_user where id in (select id from t_user order by id) [Err] ORA-00907: 缺失右括號 SELECT * from t_user where id in (se

mysql查詢報錯: ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_by

在用mysql執行如下查詢的時候: select * from `sys_user_group` group by `GROUP_ID` 報錯資訊如下: [Err] 1055 - Expr

mysql 查詢in,返回結果集合失敗

SELECT * FROM station_quality_detail_info qa INNER JOIN station_info sinfo on qa.station_info_id = sinfo.id WHERE FIND_IN_SET(sinfo.ser

查詢(in exists)

select * from [dbo].[student] where StudentNo in(1501,1503,1505);--這個是返回1501,1503,1505 select * from

改寫優化SQL(1):標量查詢left join

標量子查詢就是在select中出現的子查詢,效率相對來說比較低,建議修改為效率更高的left join。 一、建表 CREATE TABLE tb_emp ( emp_id INT NOT NULL PRIMARY KEY CLUSTERED, emp_name VARC

[置頂] 查詢左連結

子查詢是一個 SELECT 查詢,它巢狀在 SELECT、INSERT、UPDATE、DELETE 語句或其它子查詢中。   任何允許使用表示式的地方都可以使用子查詢,子查詢可以使我們的程式設計靈活多樣,可以用來實現一些特殊的功能。但是在效能上,往往一個不合適的子查詢用法會形成一個性能瓶頸。如果子查詢的條件

查詢+in+exists/not exists+all+any+多列查詢

子查詢: 將查詢語句作為外部sql的條件 注意 1子查詢不能使用order by 2多行子查詢可以返回多行記錄,外部要使用多行操作符(In,exists,any ,all… ) where 或者 having +in ,not in,>,<

mysql 查詢兩表使用join on和使用查詢in的比較

有兩個表 promotion_full_reduction base_user_favorite_item 現在要查詢使用者收藏的商品中參加促銷了的商品個數,有兩種寫法,一種是使用in子查詢: SELECT COUNT(1) FROM pr

mysql如何用order by 自定義排序

原表 user: id  name   roleId 1    aaa     1 2    bbb     2 3    ccc     3 4    ddd     4 5    eee     51,MySQL可以通過field()函式自定義排序,格式:fi

SqlServer2005 查詢 第七講 order by

今天我們來講sql命令中的引數order by的用法 order by order by:可以理解成【以某個欄位排序】 order by a,b // a和b都按升序 order by a,b desc // a升序,b降序 order by a desc, b // a降序,b升序 order by a

SQL SERVER 查詢使用Order By;按In排序

【子查詢】使用order by select * from (select top 100 percent * from table order by id) a 這是發現結果沒有按id排序,需要將100 percent 改成 99.999 percent 或10000000(儘量大)

sql 異常<除非另外還指定了 TOP、OFFSET 或 FOR XML,否則,ORDER BY 子句在視圖、內聯函數、派生表、查詢和公用表表達式中無效。>

select sel top percent 異常 子句 cor 查詢 表達 問題:當子查詢內存在ORDER BY 字句時查詢會報錯 SQL: SELECT * FROM (   SELECT * FROM USER ORDER BY USER_CORD ) S. 解

查詢內存在ORDER BY 字句時查詢會報錯

問題: highlight div 數據 order use 解決辦法 內存 true 問題:當子查詢內存在ORDER BY 字句時查詢會報錯 SQL: SELECT * FROM (   SELECT * FROM USER ORDER BY USER_CORD

sql查詢 order by失效問題

一、問題描述  三表聯合查詢  按主表的時間倒敘並分頁   下面sql語句 ORDER BY失效 ,如果把 ORDER BY  放在最後 比如有20條資料 第一頁會是10 -1 第二頁是20-11  分頁不正確   查詢資料發現:在my

sql:除非另外還指定了 TOP 或 FOR XML,否則,ORDER BY 子句在檢視、行內函數、派生表、查詢

執行sql語句: select * from ( select * from tab where ID>20 order by userID desc ) as a order by date desc 邏輯上看著挺對 但是報錯: 除非另外還指定了 TO

除非同時指定了 TOP,否則 ORDER BY 子句在檢視、內嵌函式、派生表和查詢中無效。

在sql server 2000中,報錯:”除非同時指定了 TOP,否則 ORDER BY 子句在檢視、內嵌函式、派生表和子查詢中無效。“,如果實在要用 ORDER BY ,但是又不能指定確定的TOP資料時,怎麼辦呢? 解決方案: 使 用 TOP 100 PERCENT (

Mysql5.7版本group by 查詢order by 無效的問題解決辦法

我們都知道group by 會選擇保留第一條資料,預設是按照id排序的,如果我們想通過別的欄位排序,比如最後建立的那條記錄,可以先按照建立時間降序,再group by即可得到每個分組的最新建立的資料。 例: 通過如下sql查出兩條資料 SELECT * FROM xxx WHERE gr

針對sql錯誤:“除非另外還指定了 TOP 或 FOR XML,否則,ORDER BY 子句在檢視、行內函數、派生表、查詢和公用表表達式中無效”的原理與解決

執行sql語句: select * from ( select * from tab where ID>20 order by userID desc ) as a order by date desc 邏輯上看著挺對 但是報錯: 除非另

使用group by分組之後查詢order by排序失效的問題

需求: 1.首頁的查詢需要按照lrsj進行排序 2.每一條資料通過fchrq,chxh進行分組 原始的sql SELECT fchrq,chxh FROM (SELECT top 100 percent chxh,fchrq,lrsj FROM HCZZQD_so

查詢語句(或檢視等)中,不能使用Order by語句,除非使用TOP 或 FOR XML

 在子查詢語句中,不能使用Order by語句,除非使用top或for xml 如下面的表t_table: field1field2 11eee 11bbb 44aaa 33ddd 55ccc 有下面的SQL語句: 執行是會出錯的,錯誤資訊