MySQL子查詢操作實(shí)例詳解
本文實(shí)例總結(jié)了MySQL子查詢操作。分享給大家供大家參考,具體如下:
定義兩個(gè)表tb1和tb2
CREATE table tbl1 ( num1 INT NOT NULL); CREATE table tbl2 ( num2 INT NOT NULL);
向兩個(gè)表中插入數(shù)據(jù):
INSERT INTO tbl1 values(1), (5), (13), (27); INSERT INTO tbl2 values(6), (14), (11), (20);
any some關(guān)鍵字的子查詢
SELECT num1 FROM tbl1 WHERE num1 > ANY (SELECT num2 FROM tbl2);
all關(guān)鍵字的子查詢
SELECT num1 FROM tbl1 WHERE num1 > ALL (SELECT num2 FROM tbl2);
exists關(guān)鍵字的子查詢
SELECT * from fruits WHERE EXISTS (SELECT s_name FROM suppliers WHERE s_id = 107); SELECT * from fruits WHERE f_price>10.20 AND EXISTS (SELECT s_name FROM suppliers WHERE s_id = 107); SELECT * from fruits WHERE NOT EXISTS (SELECT s_name FROM suppliers WHERE s_id = 107);
帶in關(guān)鍵字的子查詢
SELECT c_id FROM orders WHERE o_num IN (SELECT o_num FROM orderitems WHERE f_id = 'c0'); SELECT c_id FROM orders WHERE o_num NOT IN (SELECT o_num FROM orderitems WHERE f_id = 'c0');
帶比較運(yùn)算符的子查詢
SELECT s_id, f_name FROM fruits WHERE s_id = (SELECT s1.s_id from suppliers AS s1 WHERE s1.s_city = 'Tianjin');
<>所有非
SELECT s_id, f_name FROM fruits WHERE s_id <> (SELECT s1.s_id from suppliers AS s1 WHERE s1.s_city = 'Tianjin');
定義兩個(gè)表tb1和tb2
CREATE table tbl1 ( num1 INT NOT NULL); CREATE table tbl2 ( num2 INT NOT NULL);
向兩個(gè)表中插入數(shù)據(jù)
INSERT INTO tbl1 values(1), (5), (13), (27); INSERT INTO tbl2 values(6), (14), (11), (20);
【例.53】返回tbl2表的所有 num2 列,然后將 tbl1 中的 num1 的值與之進(jìn)行比較,只要大于 num2的任何值為符合查詢條件的結(jié)果
SELECT num1 FROM tbl1 WHERE num1 > ANY (SELECT num2 FROM tbl2);
【例.54】返回tbl1表的中比tbl2表num2 列所有值都大的值
SELECT num1 FROM tbl1 WHERE num1 > ALL (SELECT num2 FROM tbl2);
【例.55】查詢表suppliers表中是否存在s_id=107的供應(yīng)商,如果存在則查詢fruits表中的記錄
SELECT * from fruits WHERE EXISTS (SELECT s_name FROM suppliers WHERE s_id = 107);
【例.56】查詢表suppliers表中是否存在s_id=107的供應(yīng)商,如果存在則查詢fruits表中的f_price大于10.20的記錄
SELECT * from fruits WHERE f_price>10.20 AND EXISTS (SELECT s_name FROM suppliers WHERE s_id = 107);
【例.57】查詢表suppliers表中是否存在s_id=107的供應(yīng)商,如果不存在則查詢fruits表中的記錄
SELECT * from fruits WHERE NOT EXISTS (SELECT s_name FROM suppliers WHERE s_id = 107);
【例.58】在orderitems表中查詢訂購f_id為c0的訂單號,并根據(jù)訂單號查詢具有訂單號的客戶c_id
SELECT c_id FROM orders WHERE o_num IN (SELECT o_num FROM orderitems WHERE f_id = 'c0');
【例.59】與前一個(gè)例子語句類似,但是在SELECT語句中使用NOT IN操作符
SELECT c_id FROM orders WHERE o_num NOT IN (SELECT o_num FROM orderitems WHERE f_id = 'c0');
【例.60】在suppliers表中查詢s_city等于Tianjin的供應(yīng)商s_id,然后在fruits表中查詢所有該供應(yīng)商提供的水果的種類
SELECT s_id, f_name FROM fruits WHERE s_id = (SELECT s1.s_id from suppliers AS s1 WHERE s1.s_city = 'Tianjin');
【例.61】在suppliers表中查詢s_city等于Tianjin的供應(yīng)商s_id,然后在fruits表中查詢所有非該供應(yīng)商提供的水果的種類,SQL語句如下:
SELECT s_id, f_name FROM fruits WHERE s_id <> (SELECT s1.s_id from suppliers AS s1 WHERE s1.s_city = 'Tianjin');
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》
希望本文所述對大家MySQL數(shù)據(jù)庫計(jì)有所幫助。
相關(guān)文章
mysql for update是鎖表還是鎖行實(shí)例詳解
在并發(fā)一致性控制場景中,我們常常用for update悲觀鎖來進(jìn)行一致性的保證,但是如果不了解它的機(jī)制,就進(jìn)行使用,很容易出現(xiàn)事故,比如for update進(jìn)行了鎖表導(dǎo)致其他請求只能等待,從而拖垮系統(tǒng),這篇文章主要介紹了mysql for update是鎖表還是鎖行操作,需要的朋友可以參考下2024-03-03
CentOS系統(tǒng)中安裝MySQL和開啟MySQL遠(yuǎn)程訪問的方法
這篇文章主要介紹了CentOS系統(tǒng)中安裝MySQL和開啟MySQL遠(yuǎn)程訪問的方法,包括MySQL的隨機(jī)啟動(dòng)等操作的介紹,需要的朋友可以參考下2016-02-02
一文帶你搞懂mysql中的三種數(shù)據(jù)讀取方式
在與MySQL數(shù)據(jù)庫交互時(shí),數(shù)據(jù)的讀取方式有多種選擇,每種方式都有其獨(dú)特的原理、優(yōu)勢和劣勢,本文將對這三種讀取方式進(jìn)行詳細(xì)介紹,需要的可以參考下2024-12-12
Mysql常用函數(shù)之Rank排名函數(shù)詳解
這篇文章主要介紹了Mysql常用函數(shù)之Rank排名函數(shù)詳解,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
安裝MySQL 5.7出現(xiàn)報(bào)錯(cuò):unknown variable ‘mysqlx_port

