使用子查詢實現多表檢索

子查詢可以返回各種不同類型的信息

  • 標量子查詢返回一個值霹肝;(最嚴格的,適用范圍也最大)
  • 列子查詢返回一個由一個值或多個值構成的
  • 行子查詢返回一個由一個值或多個值構成的恭金;
  • 表子查詢返回一個由一個行或多個行構成的坟瓢,而則由一個或多個列構成勇边。

帶關系比較運算符的子查詢
運算符:=、<>折联、>粥诫、>=、< 和 <= 崭庸。

-- 一般的子查詢,有時候為了滿足返回一個值的要求怀浆,可以使用 LIMIT 1 來限制
SELECT * FROM president
WHERE brith = (SELECT min(brith) FROM president);

-- 使用一個行構造器來實現一組值(即元組)與子查詢結果的比較
-- ROW(city,state) 等價于 (city,state)
SELECT last_name,first_name,city,state FROM president
WHERE (city,state) = (
  SELECT city,state FROM president WHERE last_name='Adam' AND first_name='John'
);

IN 和 NOT IN 子查詢

-- 查詢有缺勤記錄的學生
SELECT * FROM student WHERE student_id
IN (SELECT student_id FROM absence);
-- 查詢沒有缺勤記錄的學生
SELECT * FROM student WHERE student_id
NOT IN (SELECT student_id FROM absence);
-- 也可以使用行構造器來指定與各列進行比較
SELECT last_name,first_name,city,state FROM president
WHERE (city,state) IN (
  SELECT city,state FROM president
  WHERE last_name = 'Roosevelt'
);

ALL、ANY 和 SOME 子查詢
INNOT IN= ANY<> ALL 的縮寫

-- 檢索最早出生的總統(tǒng)
SELECT last_name,first_name,brith FROM president
WHERE brith <= ALL (SELECT brith FROM president);
-- 行構造器
SELECT last_name,first_name,city,state FROM president
WHERE (city,state) = ANY (
  SELECT city,state FROM president WHERE last_name = 'Roosevelt'
);

EXISTS 和 NOT EXISTS 子查詢

-- 根據子查詢是否返回了行來判斷真假怕享,并不關心行所包含的具體內容执赡,所以使用 select 1
SELECT exists(SELECT 1 FROM absence);
SELECT NOT exists(SELECT 1 FROM absence);

相關子查詢

-- 不相關的子查詢不會引用外層查詢里的值,因此它自己可以作為一條的單獨查詢命令去執(zhí)行
SELECT j FROM t2 WHERE j IN (SELECT i FROM t1);
-- 相關子查詢則引用了外層查詢里的值函筋,所以它也就依賴于外層查詢沙合。
-- 通常用在 EXISTS 和 NOT EXISTS 子查詢里
SELECT j FROM t2 WHERE (SELECT i FROM t1 WHERE i = j);

FROM 子句里的子查詢

-- 子查詢可以用在 FROM 子句里,以生成某些值跌帐。
SELECT * FROM (SELECT 1,2) AS t1 INNER JOIN (SELECT 3,4) AS t2;

將子查詢改寫為連接

-- 改寫用來查詢匹配值的子查詢
SELECT * FROM score
WHERE student_id IN (SELECT student_id FROM student WHERE sex='F');
-- 改寫成
SELECT score.* FROM score INNER JOIN student
ON score.student_id = student.student_id WHERE student.sex = 'F';
-- 改寫用來查詢非匹配(缺失)值的子查詢
SELECT * FROM student
WHERE student_id NOT IN (SELECT student_id FROM absence);
-- 改寫成
SELECT student.*
FROM student LEFT JOIN absence ON student.student_id = absence.student_id
WHERE absence.student_id IS NULL ;

使用 UNION 實現多表檢索

-- UNION 有以下幾種特性:
-- ①首懈、列名和數據類型:UNION 結果集里的列名來自于第一個 SELECT 里的列名
SELECT i1,c1 FROM t1 UNION SELECT i2,c2 FROM t2;
SELECT i1,c1 FROM t1 UNION SELECT c2,i2 FROM t2;
-- ②绊率、重復行處理:默認情況下,UNION 會將結果集里的重復行剔除掉
SELECT * FROM t1 UNION SELECT * FROM t2;
-- 如果想保留重復的行究履,則需要把所有的 UNION 改為 UNION ALL
SELECT * FROM t1 UNION ALL SELECT * FROM t2;
-- ③滤否、ORDER BY 和 LIMIT 處理
-- 注意:order by 只能引用第一個 select 語句里的列名
(SELECT i1,c1 FROM t1 LIMIT 1) UNION (SELECT i2,c2 FROM t2 LIMIT 2)
ORDER BY c1
LIMIT 2;
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市最仑,隨后出現的幾起案子藐俺,更是在濱河造成了極大的恐慌,老刑警劉巖泥彤,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件欲芹,死亡現場離奇詭異,居然都是意外死亡吟吝,警方通過查閱死者的電腦和手機菱父,發(fā)現死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剑逃,“玉大人滞伟,你說我怎么就攤上這事】还螅” “怎么了梆奈?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長称开。 經常有香客問我亩钟,道長,這世上最難降的妖魔是什么鳖轰? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任清酥,我火速辦了婚禮,結果婚禮上蕴侣,老公的妹妹穿的比我還像新娘焰轻。我一直安慰自己,他們只是感情好昆雀,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布辱志。 她就那樣靜靜地躺著,像睡著了一般狞膘。 火紅的嫁衣襯著肌膚如雪揩懒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天挽封,我揣著相機與錄音已球,去河邊找鬼。 笑死,一個胖子當著我的面吹牛智亮,可吹牛的內容都是我干的忆某。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼阔蛉,長吁一口氣:“原來是場噩夢啊……” “哼弃舒!你這毒婦竟也來了?” 一聲冷哼從身側響起馍忽,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎燕差,沒想到半個月后遭笋,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡徒探,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年瓦呼,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片测暗。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡央串,死狀恐怖,靈堂內的尸體忽然破棺而出碗啄,到底是詐尸還是另有隱情质和,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布稚字,位于F島的核電站饲宿,受9級特大地震影響,放射性物質發(fā)生泄漏胆描。R本人自食惡果不足惜瘫想,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昌讲。 院中可真熱鬧国夜,春花似錦、人聲如沸短绸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽醋闭。三九已至礼搁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間目尖,已是汗流浹背馒吴。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工媒吗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瞎疼,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像夺英,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子陆赋,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容

  • 一肥照、子查詢定義 定義: 子查詢允許把一個查詢嵌套在另一個查詢當中。 子查詢歹河,又叫內部查詢掩浙,相對于內部查詢,包含內部...
    我是強強閱讀 3,173評論 0 4
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,813評論 0 38
  • 1. SQL 簡介 SQL 的目標 理想情況下秸歧,數據庫語言應允許用戶: 建立數據庫和關系結構 完成基本數據管理任務...
    板藍根plank閱讀 2,351評論 0 11
  • 1厨姚、創(chuàng)建練習使用的數據表 goods_id —— 商品編號goods_name —— 商品名稱goods_cate...
    黒貓閱讀 1,022評論 0 4
  • 我覺得人最大的敵人就是自己戰(zhàn)勝了自己也就戰(zhàn)勝了困難,那要想要戰(zhàn)勝自己键菱,就用擁有一個良好的心態(tài)谬墙,心態(tài)好了,哪怕擺地攤...
    小小鳥棒棒棒棒棒棒閱讀 88評論 0 0