超碰97资源在线免费观看-国产亚洲一区二区久久-欧美日韩成人字幕一区-激情五月网在线视频-亚洲天堂美女av在线-麻豆视传媒精品av-婷婷激情综合激情五月俺也去-国产精品久久久久久亚洲av站-51精产国品一二三产区区,久久久久久久区二区三区四区久久久,色哟哟视频国产精品,日韩va亚洲va欧美

中山php|最優(yōu)網(wǎng)絡(luò)中山做網(wǎng)站 中山php建站

最優(yōu)良人

2011/08/14 at 01:00

Mysql 子查詢的用法

一,子選擇基本用法
1,子選擇的定義
子迭擇允許把一個查詢嵌套在另一個查詢當中。比如說:一個考試記分項目把考試事件分為考試(T)和測驗(Q)兩種情形。下面這個查詢就能只找出學生們的考試成績
select * from score where event_id in (select event_id from event where type='T');
2,子選擇的用法(3種)
? 用子選擇來生成一個參考值
在這種情況下,用內(nèi)層的查詢語句來檢索出一個數(shù)據(jù)值,然后把這個數(shù)據(jù)值用在外層查詢語句的比較操作中。比如說,如果要查詢表中學生們在某一天的測驗成績,就應(yīng)該使用一個內(nèi)層查詢先找到這一天的測驗的事件號,然后在外層查詢語句中用這個事件號在成績表里面找到學生們的分數(shù)記錄。具體語句為:
select * from score where
id=(select event_id from event where date='2002-03-21' and type='Q');
需要注意的是:在應(yīng)用這種內(nèi)層查詢的結(jié)果主要是用來進行比較操作的分法時,內(nèi)層查詢應(yīng)該只有一個輸出結(jié)果才對??蠢樱绻胫滥膫€美國總統(tǒng)的生日最小,構(gòu)造下列查詢
select * from president where birth=min(birth)
這個查詢是錯的!因為MySQL不允許在子句里面使用統(tǒng)計函數(shù)!min()函數(shù)應(yīng)該有一個確定的參數(shù)才能工作!所以我們改用子選擇:
select * from president where birht=(select min(birth) from presidnet);
? exists 和 not exists 子選擇
上一種用法是把查間結(jié)果由內(nèi)層傳向外層、本類用法則相反,把外層查詢的結(jié)果傳遞給內(nèi)層。看外部查詢的結(jié)果是否滿足內(nèi)部查間的匹配徑件。這種"由外到內(nèi)"的子迭擇用法非常適合用來檢索某個數(shù)據(jù)表在另外一個數(shù)據(jù)表里面有設(shè)有匹配的記錄

數(shù)據(jù)表t1 數(shù)據(jù)表t2
I1 C1 I2 C2
1
2
3 A

C 2
3
4 C

A
先找兩個表內(nèi)都存在的數(shù)據(jù)
select i1 from t1 where exists(select * from t2 where t1.i1=t2.i2);
再找t1表內(nèi)存在,t2表內(nèi)不存在的數(shù)據(jù)
select i1 form t1 where not exists(select * from t2 where t1.i1=t2.i2);

需要注意:在這兩種形式的子選擇里,內(nèi)層查詢中的星號代表的是外層查詢的輸出結(jié)果。內(nèi)層查詢沒有必要列出有關(guān)數(shù)據(jù)列的名字,田為內(nèi)層查詢關(guān)心的是外層查詢的結(jié)果有多少行。希望大家能夠理解這一點
? in 和not in 子選擇
在這種子選擇里面,內(nèi)層查詢語句應(yīng)該僅僅返回一個數(shù)據(jù)列,這個數(shù)據(jù)列里的值將由外層查詢語句中的比較操作來進行求值。還是以上題為例
先找兩個表內(nèi)都存在的數(shù)據(jù)
select i1 from t1 where i1 in (select i2 from t2);
再找t1表內(nèi)存在,t2表內(nèi)不存在的數(shù)據(jù)
select i1 form t1 where i1 not in (select i2 from t2);
好象這種語句更容易讓人理解,再來個例子
比如你想找到所有居住在A和B的學生。
select * from student where state in('A','B')
二, 把子選擇查詢改寫為關(guān)聯(lián)查詢的方法。
1,匹配型子選擇查詢的改寫
下例從score數(shù)據(jù)表里面把學生們在考試事件(T)中的成績(不包括測驗成績!)查詢出來。
Select * from score where event_id in (select event_id from event where type='T');
可見,內(nèi)層查詢找出所有的考試事件,外層查詢再利用這些考試事件搞到學生們的成績。
這個子查詢可以被改寫為一個簡單的關(guān)聯(lián)查詢:
Select score.* from score, event where score.event_id=event.event_id and event.event_id='T';
下例可以用來找出所有女學生的成績。
Select * from score where student_id in (select student_id form student where sex = 'f');
可以把它轉(zhuǎn)換成一個如下所示的關(guān)聯(lián)查詢:
Select * from score
Where student _id =student.student_id and student.sex ='f';
把匹配型子選擇查詢改寫為一個關(guān)聯(lián)查詢是有規(guī)律可循的。下面這種形式的子選擇查詢:
Select * from tablel
Where column1 in (select column2a from table2 where column2b = value);
可以轉(zhuǎn)換為一個如下所示的關(guān)聯(lián)查詢:
Select tablel. * from tablel,table2
Where table.column1 = table2.column2a and table2.column2b = value;
(2)非匹配(即缺失)型子選擇查詢的改寫
子選擇查詢的另一種常見用途是查找在某個數(shù)據(jù)表里有、但在另一個數(shù)據(jù)表里卻沒有的東西。正如前面看到的那樣,這種"在某個數(shù)據(jù)表里有、在另一個數(shù)據(jù)表里沒有"的說法通常都暗示著可以用一個left join 來解決這個問題。請看下面這個子選擇查詢,它可以把沒有出現(xiàn)在absence數(shù)據(jù)表里的學生(也就是那些從未缺過勤的學生)給查出來:
Select * from student
Where student_id not in (select student_id from absence);
這個子選擇查詢可以改寫如下所示的left join 查詢:
Select student. *
From student left join absence on student.student_id =absence.student_id
Where absence.student_id is null;
把非匹配型子選擇查詢改寫為關(guān)聯(lián)查詢是有規(guī)律可循的。下面這種形式的子選擇查詢:
Select * from tablel
Where column1 not in (select column2 from table2);
可以轉(zhuǎn)換為一個如下所示的關(guān)聯(lián)查詢:
Select tablel . *
From tablel left join table2 on tablel.column1=table2.column2
Where table2.column2 is null;
注意:這種改寫要求數(shù)據(jù)列table2.column2聲明為not null。

標簽:, ,
-
国产欧美日韩一区二区视频在线观看-日韩精品欧美亚洲国产最大-中文字幕乱码熟女少妇-久久婷婷激情五月天 | 国产精品综合久久激情高潮-亚洲欧美日韩卡通动漫-亚洲成人久久专区-国产精品高潮持久呻吟懂色av 成人在线一区二区三区视频-日韩性感美女伦理片-国产伦精品午夜剧场-中文字幕伊人久久网 | 国产一区二区三区四区美女-国产精品999久久久久-国产精品\久久av-国产色婷婷av麻豆天 | 日韩在线免费毛片-国产91在线播放精品91明里-91中文字幕yellow-huangse视频在线观看 | 日韩亚洲中文错码电影院-人人妻人人澡人人爽人人老司机-精品久久中文字幕伦理-国内精品,中文字幕 | 麻豆理伦片免费在线观看-国av一区二区在线-国产日韩成人免费视频-日韩成不卡av在线播放 | 成人熟女俱乐部-色婷婷精品一区=区-亚洲天堂中文字幕一区二区三区免费-日韩三级电影一区 | 成人精品视频99在线观看免费视频-91高清免费看视频-国产精品久久久久鬼色-欧美日韩日本在线视频 男人的天堂久久91-av一区中文字幕在线观看-国产91熟女被艹嗷嗷叫-五月婷婷丁香激情综合 | 精品人妻少妇久久久久久久久-亚洲成人国产精品网站-中文字幕免费高清成人-欧美日韩久久在线观看 精品国产18久久久久久二百-午夜鲁丝一区二区鲁丝久久久-91午夜精品一区二区在线观看-蜜臀久久99精品久久宅男 | 精品国产乱码久久久久久毛-99精国产99久久久久-日本熟女熟妇bbw-欧美日韩亚洲欧美日韩亚洲欧美 | 超碰97人妻在线视频-91精品91久久久久久久-日韩人妻在线中文字幕在线视频-91精品国产综合久久精品密臀 | 日本一区二区三区高-久久国产乱子伦精品免费观看-7777精品久久久大香-久久www免费人成_看片 | 久久精品人妻系列av-日韩人妻视频在线中文字幕观看-超碰97久久人妻-18禁久久久久久久 | 日韩性感在线电影播放-一本色道久久加勒比欧美专区-热99/99热这里只有精品10-超碰97公开在线 | 噜噜狠狠狠狠综合久久86-国产精品99久久久久久-婷婷伊人激情网-久久免费观看视频a区 | 欧美日韩在线一二三-91唐先生在线视频-久久99久久精品久久综合-日韩一区 中文字幕 | 99精品视频a级视频在线观看-日本又黄又爽的视频-久久国产 中文字幕-久久久亚洲综合视频 | 日韩又湿又黄的视频网站-日韩午夜的免费理论片-91精品国产高清久久久久久-蜜臀aⅴ国内精品久久久 | 精品国产精品色哟哟-岛国av中文字幕在线观看-久久久999精品国产-乱人视频中文字幕 | 国产乱子伦一区二区三-久久r中文字幕-国产亚洲美女精品久久久-久久青青草打炮内射视频 | 中文字幕日本久久高清-蜜桃久久久久久久久久久久久-亚洲欧美综合第一页-女同另类欧美激情一区二区三区 | 1024你懂的在线观看视频-中日韩一区二区三区视频-久久中文字幕资源网-懂色av中文一区二区三区四区 | 91麻豆免费观看视频-在线成人国产亚洲一区二区-人妻激情视频一区二区三区四区-在线观看日韩男女 久久精品在线看久久-亚洲区成人综合自拍-国产精品久久妇女蜜臀-久久久亚洲老熟女 | 国产欧美一区二区自拍-中文字幕婷婷综合十二月-人妻中文字幕久-日韩日韩精品日韩在线韩日韩精品 人妻巨乳中文字幕-久久精品色浮熟妇丰满人妻9-超碰97资源在线播放-欧美日韩国产精品成人在线视频 | 人人妻人人爽人人躁-精品少妇在线一区二区-精品久久久久久久一区二区8-精品国产乱码久久久久久 | 国产99热精品在线播放-亚洲一区二区91-亚洲免费人妻精品视频-国语对白 国产精品 | 亚洲天堂 成人av-h色小视频在线观看-成人免费视频国产免费麻豆下-2018中文字幕免费在线 | 日韩av日韩av-国产91人妻精品一二-蜜桃一区二区三区免费在线观看-久久久黑人hd | 日韩午夜av在线播放-97久久超碰国产精品只有精品-国产日韩激情视频在线-人妻蜜乳1~3中文字幕 | 99热尹人综合国语-久久久久久久逼逼-日韩在线观看视频3-91精品国产麻豆国产自产在线夫 | 日本中文字幕一区二区-5月综合久久大香蕉-91精品国产色综合久久不卡98口-少妇人妻精品一区二区三区 | 99久精品视频在线-激情久久男人天堂五月婷婷-99人妻日本中字幕产国-麻豆精品少妇在线视频 | 久久久久久久久久精品影视-日韩av在线不卡更新-午夜日韩激情网-97超碰在线中文免费 | 午夜在线观看视频免费观看999-欧美日韩色另类综合-蜜桃电影成人一区-日本韩国一区二区三区不卡 | 亚洲黄色在线观看电影-精品久久丰满熟女-97精品免费公开在线视频-久久精品青青视频免费 | 日韩少妇av电影-99精品热视频只有精品17-欧美激情中文字幕自拍偷拍-欧美一区二区在线蜜桃 | 精品视频人妻少妇一区二区三区-国产成人综合久久久久久-97 久久超级精品97-99精品国产99久久 | 久久国产东京热精品-亚洲天堂中文在线观看-97超碰熟女人妻-欧美日韩精品卡一卡二 | 久久人妻人人澡人人爽人人精品-久久久国产综合成人精品-99久久久精品久久久久久久-日本美国一区二区不卡伦理 | av国产在线一区二区-91精品一久久香蕉国产线看观看-国产精品入口麻豆哦-91精品久久久999 | 国产精品日韩高清av-天天舔天天草天天日-欧美日韩激情免费在线视频-亚洲做a爱一区=区在线观看 |