新聞中心
SQL子查詢或稱為內(nèi)部查詢、嵌套查詢,指的是在 SQLite 查詢中的 WHERE 子句中嵌入查詢語句,一個 SELECT 語句的查詢結(jié)果能夠作為另一個語句的輸入值,下面詳細(xì)講解一下SQL子查詢。

創(chuàng)新互聯(lián)建站長期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為洛陽企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、網(wǎng)站建設(shè),洛陽網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
image-20210921181443827
SELECT 語句中的子查詢使用
子查詢通常與 SELECT 語句一起使用?;菊Z法如下:
SELECT column_name [, column_name ]
FROM table1 [, table2 ]
WHERE column_name OPERATOR
(SELECT column_name [, column_name ]
FROM table1 [, table2 ]
[WHERE])
實例
假設(shè) COMPANY 表有以下記錄:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
現(xiàn)在,讓我們檢查 SELECT 語句中的子查詢使用:
sqlite> SELECT *
FROM COMPANY
WHERE ID IN (SELECT ID
FROM COMPANY
WHERE SALARY > 45000) ;
這將產(chǎn)生以下結(jié)果:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
INSERT 語句中的子查詢使用
子查詢也可以與 INSERT 語句一起使用。INSERT 語句使用子查詢返回的數(shù)據(jù)插入到另一個表中。在子查詢中所選擇的數(shù)據(jù)可以用任何字符、日期或數(shù)字函數(shù)修改。
基本語法如下:
INSERT INTO table_name [ (column1 [, column2 ]) ]
SELECT [ *|column1 [, column2 ]
FROM table1 [, table2 ]
[ WHERE VALUE OPERATOR ]
實例
假設(shè) COMPANY_BKP 的結(jié)構(gòu)與 COMPANY 表相似,且可使用相同的 CREATE TABLE 進行創(chuàng)建,只是表名改為 COMPANY_BKP?,F(xiàn)在把整個 COMPANY 表復(fù)制到 COMPANY_BKP,語法如下:
sqlite> INSERT INTO COMPANY_BKP
SELECT * FROM COMPANY
WHERE ID IN (SELECT ID
FROM COMPANY) ;
UPDATE 語句中的子查詢使用
子查詢可以與 UPDATE 語句結(jié)合使用。當(dāng)通過 UPDATE 語句使用子查詢時,表中單個或多個列被更新。
基本語法如下:
UPDATE table
SET column_name = new_value
[ WHERE OPERATOR [ VALUE ]
(SELECT COLUMN_NAME
FROM TABLE_NAME)
[ WHERE) ]
實例
假設(shè),我們有 COMPANY_BKP 表,是 COMPANY 表的備份。
下面的實例把 COMPANY 表中所有 AGE 大于或等于 27 的客戶的 SALARY 更新為原來的 0.50 倍:
sqlite> UPDATE COMPANY
SET SALARY = SALARY * 0.50
WHERE AGE IN (SELECT AGE FROM COMPANY_BKP
WHERE AGE >= 27 );
這將影響兩行,最后 COMPANY 表中的記錄如下:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 10000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 42500.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
DELETE 語句中的子查詢使用
子查詢可以與 DELETE 語句結(jié)合使用,就像上面提到的其他語句一樣。
基本語法如下:
DELETE FROM TABLE_NAME
[ WHERE OPERATOR [ VALUE ]
(SELECT COLUMN_NAME
FROM TABLE_NAME)
[ WHERE) ]
實例
假設(shè),我們有 COMPANY_BKP 表,是 COMPANY 表的備份。
下面的實例刪除 COMPANY 表中所有 AGE 大于或等于 27 的客戶記錄:
sqlite> DELETE FROM COMPANY
WHERE AGE IN (SELECT AGE FROM COMPANY_BKP
WHERE AGE > 27 );
這將影響兩行,最后 COMPANY 表中的記錄如下:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 42500.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
文章標(biāo)題:詳解SQL子查詢
當(dāng)前路徑:http://m.fisionsoft.com.cn/article/cdiegio.html


咨詢
建站咨詢
