SQL查詢語句中,什么叫子查詢
嵌套SELECT語句也叫子查詢,一個 SELECT 語句的查詢結果能夠作為另一個語句的輸入值。
子查詢不但能夠出現在Where子句中,也能夠出現在from子句中,作為一個臨時表使用,也能夠出現在select list中,作為一個字段值來返回。 1、單行子查詢 :單行子查詢是指子查詢的返回結果只有一行數據。
當主查詢語句的條件語句中引用子查詢結果時可用單行比較符號(=, >, <, >=, <=, <>)來進行比較。 例:select ename,deptno,sal from emp where deptno=(select deptno from dept where loc='NEW YORK'); 2、多行子查詢:多行子查詢即是子查詢的返回結果是多行數據。
當主查詢語句的條件語句中引用子查詢結果時必須用多行比較符號(IN,ALL,ANY)來進行比較。其中,IN的含義是匹配子查詢結果中的任一個值即可("IN" 操作符,能夠測試某個值是否在一個列表中),ALL則必須要符合子查詢的所有值才可,ANY要符合子查詢結果的任何一個值即可。
而且須注意ALL 和ANY 操作符不能單獨使用,而只能與單行比較符(=、>、< 、>= 、<= 、<>)結合使用。 例: 1).多行子查詢使用IN操作符號例子:查詢選修了老師名叫Rona(假設唯一)的學生名字 sql> select stName。
sql中in和exist語句的區別
兩者都能實現表功能查詢,主要區別如下:
1、適用表的類型不同。
in是子查詢為驅動表,外面的表為被驅動表,故適用于子查詢結果集小而外面的表結果集大的情況。
exists是外面的表位驅動表,子查詢里面的表為被驅動表,故適用于外面的表結果集小而子查詢結果集大的情況。
2、子查詢關聯不同。
exists一般都是關聯子查詢。對于關聯子查詢,必須先執行外層查詢,接著對所有通過過濾條件的記錄,執行內層查詢。外層查詢和內層查詢相互依賴,因為外層查詢會把數據傳遞給內層查詢。
in則一般都是非關聯子查詢,非關聯子查詢則必須先完成內層查詢之后,外層查詢才能介入。
3、執行次數不同。
IN 語句:只執行一次,確定給定的值是否與子查詢或列表中的值相匹配。in在查詢的時候,首先查詢子查詢的表,然后將內表和外表做一個笛卡爾積,然后按照條件進行篩選。所以相對內表比較小的時候,in的速度較快。
EXISTS語句:執行次數根據表的長度而定。指定一個子查詢,檢測行的存在。遍歷循環外表,然后看外表中的記錄有沒有和內表的數據一樣的。匹配上就將結果放入結果集中。
參考資料來源:搜狗百科--In操作符
參考資料來源:搜狗百科--Exists
SQL in查詢語句
在數據庫中有一個pzdz 這是個字段嗎?
里面的是數字組成的字符串
是這種格式嗎?
pzdz
1,3,5,2
3,6,15,17
select * from table where pzdz like('aa,%') or pzdz like('%,aa') or pzdz like('%,aa,%') or pzdz='aa';
考慮到了
pzdz
。,aa,。
aa,。
。.,aa
aa
四種情況
笨辦法
有區別的 你測試吧
轉載請注明出處華閱文章網 » sqlin子查詢語句