国产精品无污污流网站入口,日韩电影一级在线播放,99久久999久久久 http://www.jartj.cn/blog 中山php|最優(yōu)網(wǎng)絡(luò) Mon, 13 May 2013 04:56:43 +0000 en hourly 1 http://wordpress.org/?v=3.1.4 Mysql 子查詢的用法 http://www.jartj.cn/blog/view-69.html http://www.jartj.cn/blog/view-69.html#comments Sat, 13 Aug 2011 17:00:34 +0000 lin http://www.jartj.cn/blog/?p=69 一,子選擇基本用法
1,子選擇的定義
子迭擇允許把一個查詢嵌套在另一個查詢當(dāng)中。比如說:一個考試記分項目把考試事件分為考試(T)和測驗(Q)兩種情形。下面這個查詢就能只找出學(xué)生們的考試成績
select * from score where event_id in (select event_id from event where type='T');
2,子選擇的用法(3種)
? 用子選擇來生成一個參考值
在這種情況下,用內(nèi)層的查詢語句來檢索出一個數(shù)據(jù)值,然后把這個數(shù)據(jù)值用在外層查詢語句的比較操作中。比如說,如果要查詢表中學(xué)生們在某一天的測驗成績,就應(yīng)該使用一個內(nèi)層查詢先找到這一天的測驗的事件號,然后在外層查詢語句中用這個事件號在成績表里面找到學(xué)生們的分?jǐn)?shù)記錄。具體語句為:
select * from score where
id=(select event_id from event where date='2002-03-21' and type='Q');
需要注意的是:在應(yīng)用這種內(nèi)層查詢的結(jié)果主要是用來進(jìn)行比較操作的分法時,內(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ù)列里的值將由外層查詢語句中的比較操作來進(jìn)行求值。還是以上題為例
先找兩個表內(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的學(xué)生。
select * from student where state in('A','B')
二, 把子選擇查詢改寫為關(guān)聯(lián)查詢的方法。
1,匹配型子選擇查詢的改寫
下例從score數(shù)據(jù)表里面把學(xué)生們在考試事件(T)中的成績(不包括測驗成績?。┎樵兂鰜怼?br /> Select * from score where event_id in (select event_id from event where type='T');
可見,內(nèi)層查詢找出所有的考試事件,外層查詢再利用這些考試事件搞到學(xué)生們的成績。
這個子查詢可以被改寫為一個簡單的關(guān)聯(lián)查詢:
Select score.* from score, event where score.event_id=event.event_id and event.event_id='T';
下例可以用來找出所有女學(xué)生的成績。
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ù)表里的學(xué)生(也就是那些從未缺過勤的學(xué)生)給查出來:
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。

]]>
http://www.jartj.cn/blog/view-69.html/feed 337
国产免费一区二区三区不-日本少妇免费一区二区三区| 久久免费观看归女高潮特黄-黄色av一本二本在线观看| 熟妇勾子乱一区二区三区-欧美爱爱视频一区二区| 欧美日韩黑人在线播放-51在线精品免费视频观看| 青青操大香蕉在线播放-国产亚洲欧美精品在线观看| 久久影视av一区二区-人妻激情乱偷一区二区三区| 人妻日韩精品中文字幕图片-麻豆极度性感诱人在线露脸| 亚洲国产精品一区二区av-日本一级黄色一区二区| 亚洲欧洲一区二区福利-亚洲欧美日韩高清中文| 人妻丝袜中文字幕在线视频-亚洲成av人片一区二区三区| 色综合色综合久久综合频道-埃及艳后黄版在线观看| 99热在线精品免费6-av一区二区在线观看| 久久特一级av黄色片-91社区视频免费观看| 国产一区二区三区噜噜-精品久久亚洲一区二区欧美| 日韩精品一区二区三区十八-日韩人妻少妇一区二区三区| 91九色蝌蚪丝袜人妻-国产精品9999网站| 国内精产熟女自线一二三区-六月丁香婷婷在线观看| 91蜜桃传媒一二三区-日韩欧美国产一区呦呦| 国产精品成人欧美激情-黄色床上完整版高清无遮挡| 在线观看中午中文乱码-2021国产一级在线观看| 日韩精品中文在线观看一区-亚洲bt欧美bt精品| 四虎成人在线免费视频-亚洲熟女中文字幕天堂| 国产欧美日韩中文字幕在线-国产伊人一区二区三区四区| 性都花花世界亚洲综合-日韩av一区二区三区| mm在线精品视频在线观看-欧美国产日韩在线一区二区三区| 国内精产熟女自线一二三区-六月丁香婷婷在线观看| 欧美日韩国产综合新一区-国产综合av一区二区三区| 人妻丝袜中文字幕在线视频-亚洲成av人片一区二区三区| 亚洲一区二区三在线观看-国产精品亚洲а∨天堂123| 久久免费观看归女高潮特黄-黄色av一本二本在线观看| 亚洲国产欧美日韩不卡-熟妇激情一区二区三区| 亚洲愉拍自拍欧美精品app-亚洲一区不卡在线视频| 97人妻精品一区二区三区爱与-日韩精品亚洲专区在线观看| 丝袜美腿人妻连续中出-在线观看日韩三级视频| 欧美字幕一区二区三区-好吊妞欧美一区二区在线观看| 亚洲欧洲一区二区福利-亚洲欧美日韩高清中文| 九九热这里只有精品九九-欧美日韩人妻精品一二三| 国产传媒中文字幕在线观看-午夜福利视频在线播放观看| 亚洲欧美一区二区中文-台湾中文综合网妹子网| 国产av一区二区三区日韩接吻-av网址在线播放网站| 国产欧美日本不卡精美视频-日本后入视频在线观看|