當前位置:首頁 » 編程語言 » sqlselect子查詢
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlselect子查詢

發布時間: 2023-03-27 05:53:11

sql子查詢如何使用主查詢里的欄位作為篩選條件

sql子查詢使用主查詢里的欄位作為篩選條件的方法:
使用SELECT子句、GROUP BY子句、HAVING子句、ORDER BY子句中均可使用子查詢語句,較常用的是WHERE子句、HAVING子句和FROM子句。
子查詢是在一個完整的查詢語句中,嵌套不同功能的小查詢,從而完成復雜查詢的一種編寫形式。本部分主要介紹非關聯子查詢,關聯子查詢的適用場景,語句寫法,執行邏輯及相對應的注意事項。

Ⅱ SQL必知必會(二)函數、子查詢

#文本處理函數

UPPER()     --大寫

LOWER()    --小寫

SOUNDEX()   --讀音類似

LENGTH()    --字元串長度

#日期和時間處理函數

SELECT order_code

FROM order_table

WHERE DATEPART(yy,order_date)=2012

#to_char()函數提取日期成分,MySQL可用year()函數提取年份

SELECT order_num

FROM order_table

WHERE to_number(to_char(order_date,'YYYY'))=2012;    --to_char提取日期成分to_number轉化為數值

SELECT order_num

FROM order_table

WHERE order_date BETWEEN to_date('01-01-2012') AND to_date('12-31--2012');    --字元串轉日期

#數值處理函數

ABS()    --絕對值

COS()    --餘弦

EXP()    --指數值

PI()   --圓周率

SIN()    --正弦

SQRT()    --平方根

TAN()    --正切

#平均數AVG()

SELECT AVG(a) AS avg_a

FROM tableA

WHERE a='DLL01';

#計數

SELECT COUNT(*)  AS num_cust              --對所有行計數,不管是否NULL值

FROM tableA;

SELECT COUNT(a) AS num_a          --指定了列名,會忽略NULL值

FROM tableA;

#最值

MAX()和MIN(),忽略NULL值

#總值SUM(),忽略NULL值

SELECT SUM(price*quantity) AS total_price

FROM tableA

WHERE order_code=20008

#以上聚集函數只包含不同值

SELECT AVG(DISTINCT order_price) AS avg_price

FROM tableA

WHERE id='DLL01';

兩個子句:GROUP BY 和 HAVING

#GROUP BY創建分組HAVING過濾分組

SELECT vend_id, COUNT(*) AS num_prods

FROM tableA

WHERE price>=4

GROUP BY vend_id

HAVING COUNT(*)>=2;   

ORDER BY price    --GROUP BY在WHERE之後在ORDER   BY之前

SELECT

FROM

WHERE

GROUP BY

HAVING

ORDER BY

#子查詢順序為從內而外

SELECT order_num 

FROM tableA

WHERE id='DLL01';

(輸出20007和20008)

SELECT id

FROM tableB

WHERE order_num IN(20007,20008);

#合並為子查詢。只能查詢單個列

SELECT id

FROM tableB

WHERE order_num IN (SELECT order_num FROM tableA WHERE id='DLL01')

SELECT  cust_name,

                cust_state

                (SELECT COUNT(*) 

                 FROM Orders

                WHERE Orders.cust_id=Customers.cust_id) AS orders

FROM Customers

ORDER BY cust_name;

#Orders.cust_id=Customers.cust_id完全限定列名,在兩張表中名字相同列拿出來比較,防止歧義

Ⅲ sql 子查詢如何寫

select id from 表A
full join
(select id,count(id) from 表B group by id)
on A.id=B.id

Ⅳ SQL中SELECT中的FROM子句可否帶另外一個SELECT

可以
SQL中SELECT嵌套
SELECT語句
是很常見的
SQL語句
,嵌套SELECT語句也叫
子查詢
,一個SELECT
語句的查詢結果能夠作為另一個語句的輸入值。子查詢不但能夠出現在Where子句中,也能夠出現在from子句中,作為一個
臨時表
使用,也能夠出現在select
list中,作為一個欄位值來返回。
例1:select子查詢出現在Where子句中
select
ename,deptno,sal
from
emp
where
deptno=(select
deptno
from
dept
where
loc='NEW
YORK');
例2:select子查詢出現在from子句中
SELECT
ename,job,sal,rownum
FROM
(SELECT
ename,job,sal
FROM
EMP
ORDER
BY
sal);
例3:select子查詢出現在select
list中,作為一個欄位值來返回
SELECT
ename,job,sal
FROM
EMP
WHERE
deptno
in
(
SELECT
deptno
FROM
dept
WHERE
dname
LIKE
'A%');
(4)sqlselect子查詢擴展閱讀
在select子句里能支持直接嵌套一個select子查詢,但是該select子查詢返回的
結果集
必須是單行,返回多
行時
會提示ORA-01427:
single-row
subquery
returns
more
than
one
row(ORA-01427:
單行子查詢返回多個行
):
select
(
SELECT
id
from
data_
dictionary
where
id=1)
From
v_photosum_attach
;
select
(
SELECT
id
from
data_dictionary
where
id=lock_purpost)
From
v_photosum_attach
;
注釋:lock_purpost是表v_photosum_attach里的一列的列名。
參考資料來源:
搜狗網路
-子查詢

Ⅳ SQL Server 之 子查詢與嵌套查詢

當由where子句指定的搜索條件指向另一張表時,就需要使用子查詢或嵌套查詢。

1 子查詢

子查詢是一個嵌套在select、insert、update或delete語句或其他子查詢中的查詢。任何允許使用表達式的地方都可以使用子查詢。

1.1語法規則:

- 子查詢的select查詢使用圓括弧括起來

- 不能包括compute或for browse子句

- 如果同時指定top子句,則可能只包括order by子句

- 子查詢最多嵌套32層,個別查詢可能會不支持32層嵌套

- 任何可以使用表達式的地方都可以使用子查詢,主要它返回的是單個值

- 如果某個表只出現在子查詢中而不出現在外部查詢中,那麼該表中的列就無法包含在輸出中

1.2 語法格式:

- where 查詢表達式 [not] in(子查詢)

- where 查詢表達式 比較運算符 [any|all] (子查詢)

- where [not] exists (子查詢)

2 嵌套查詢

嵌套查詢是指將一個查詢塊嵌套在另一個查詢塊的where子句或having短語的條件中的查詢。

嵌套查詢中上層的查詢塊稱為外側查詢或父查詢,下層查詢塊稱為內層查詢或子查詢。SQL語言允許多層嵌套,但是在子查詢中不允許出現order by子句,order by子句只能用在最外層的查詢中。

嵌套查詢的處理方法是:先處理最內側的子查詢,然後一層一層地向上處理,直到最外層的查詢塊。

2.1 簡單的嵌套查詢

子查詢的運算符含有=、<>、<、>、<=、>=

三個查詢:

第一個:查詢年紀>25的老師所教的學生

第二個:查詢年紀>25的老師

第三個:驗證查詢到的學生信息

對比:當子查詢中的分那會的結果不是一個時,父查詢無法正常工作

2.2 帶IN的嵌套查詢

當子查詢返回一系列值時,適合帶IN的嵌套查詢。

2.3 NOT IN

2.4 SOME

2.5 ANY

2.6 ALL

2.7 EXIST

Ⅵ 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 where嵌套select子查詢

sql where嵌套select子查詢
判定A表的數據是否存在B表,如果存在則顯示存在,不存在則顯示不存在
例如S#存在於SC表和student表中,判定s#是否都在student表中存在存在則顯示存在,不存在則顯示不存在,具體如下:
from student

select s#,
case when s# in(select s# from sc) then '存在'
when s# not in( select s# from sc) then '不存在'
end
from student