]]>SQL CASE 璇彞http://www.tkk7.com/justfang/archive/2009/12/23/306984.htmljustjustWed, 23 Dec 2009 02:24:00 GMThttp://www.tkk7.com/justfang/archive/2009/12/23/306984.htmlhttp://www.tkk7.com/justfang/comments/306984.htmlhttp://www.tkk7.com/justfang/archive/2009/12/23/306984.html#Feedback0http://www.tkk7.com/justfang/comments/commentRss/306984.htmlhttp://www.tkk7.com/justfang/services/trackbacks/306984.htmlCase鍏鋒湁涓ょ鏍煎紡銆傜畝鍗旵ase鍑芥暟鍜孋ase鎼滅儲鍑芥暟銆?nbsp; --綆鍗旵ase鍑芥暟 CASE sex WHEN'1'THEN'鐢?/span>' WHEN'2'THEN'濂?/span>' ELSE'鍏朵粬'END --Case鎼滅儲鍑芥暟 CASEWHEN sex ='1'THEN'鐢?/span>' WHEN sex ='2'THEN'濂?/span>' ELSE'鍏朵粬'END
榪欎袱縐嶆柟寮忥紝鍙互瀹炵幇鐩稿悓鐨勫姛鑳姐傜畝鍗旵ase鍑芥暟鐨勫啓娉曠浉瀵規(guī)瘮杈冪畝媧侊紝浣嗘槸鍜孋ase鎼滅儲鍑芥暟鐩告瘮錛屽姛鑳芥柟闈細(xì)鏈変簺闄愬埗錛屾瘮濡傚啓鍒ゆ柇寮忋?nbsp;
榪樻湁涓涓渶瑕佹敞鎰忕殑闂錛孋ase鍑芥暟鍙繑鍥炵涓涓鍚堟潯浠剁殑鍊鹼紝鍓╀笅鐨凜ase閮ㄥ垎灝嗕細(xì)琚嚜鍔ㄥ拷鐣ャ?nbsp; --姣斿璇達(dá)紝涓嬮潰榪欐SQL錛屼綘姘歌繙鏃犳硶寰楀埌“絎簩綾?#8221;榪欎釜緇撴灉 CASEWHEN col_1 IN ( 'a', 'b') THEN'絎竴綾?/span>' WHEN col_1 IN ('a') THEN'絎簩綾?/span>' ELSE'鍏朵粬'END
鏅氭儏鍐典笅錛岀敤UNION涔熷彲浠ュ疄鐜扮敤涓鏉¤鍙ヨ繘琛屾煡璇€備絾鏄偅鏍峰鍔犳秷鑰?涓や釜Select閮ㄥ垎)錛岃屼笖SQL璇彞浼?xì)姣旇緝闀裤?br />
涓嬮潰鏄竴涓槸鐢–ase鍑芥暟鏉ュ畬鎴愯繖涓姛鑳界殑渚嬪瓙 SELECT country, SUM( CASEWHEN sex ='1'THEN
population ELSE0END), --鐢鋒т漢鍙?/span> SUM( CASEWHEN sex ='2'THEN
population ELSE0END) --濂蟲т漢鍙?/span> FROM Table_A GROUPBY country;
]]>SQL 澶栭摼鎺ユ搷浣滃皬緇?inner join left join right joinhttp://www.tkk7.com/justfang/archive/2009/12/22/306936.htmljustjustTue, 22 Dec 2009 09:56:00 GMThttp://www.tkk7.com/justfang/archive/2009/12/22/306936.htmlhttp://www.tkk7.com/justfang/comments/306936.htmlhttp://www.tkk7.com/justfang/archive/2009/12/22/306936.html#Feedback0http://www.tkk7.com/justfang/comments/commentRss/306936.htmlhttp://www.tkk7.com/justfang/services/trackbacks/306936.html綆浠? 澶栭儴榪炴帴鍜岃嚜鑱旀帴 inner join(絳夊艱繛鎺? 鍙繑鍥炰袱涓〃涓仈緇撳瓧孌電浉絳夌殑琛?left join(宸﹁仈鎺? 榪斿洖鍖呮嫭宸﹁〃涓殑鎵鏈夎褰曞拰鍙寵〃涓仈緇撳瓧孌電浉絳夌殑璁板綍 right join(鍙寵仈鎺? 榪斿洖鍖呮嫭鍙寵〃涓殑鎵鏈夎褰曞拰宸﹁〃涓仈緇撳瓧孌電浉絳夌殑璁板綍 on 鎸囧畾琛ㄩ棿鑱旂粨瀛楁鍙?qiáng)鍏跺叧绯荤殑绛夊?"=" 琛ㄨ揪寮? 榪斿洖 true 鎴?false. 褰撹〃杈懼紡榪斿洖 true 鏃? 鍒欐煡璇腑鍖呭惈璇ヨ褰? ! 澶栭儴榪炴帴鍙兘鎿嶄綔宸插瓨鍦ㄤ簬鏁版嵁搴撲腑鐨勬暟鎹?br />
update (ctarticle as a left join ctclass as c on a.classid = c.classid) left join cttag as b on a.articleid = b.articleid
set tag=tag+' ', b.articleid=a.articleid, b.classid=a.classid, b.nclassid=a.nclassid
where a.classid=23 and a.nclassid=0 and tagid is not null
update (ctarticle as a left join (ctnclass as c left join ctclass as d on c.classid = d.classid) on a.nclassid = c.nclassid and a.classid = c.classid) left join cttag as b on a.articleid = b.articleid set tag=d.class+' '+c.nclass, b.articleid=a.articleid, b.classid=a.classid, b.nclassid=a.nclassid where a.classid=23 and a.nclassid=197;
鏇存柊鎿嶄綔
宸﹁繛鎺ヤ腑鏁版嵁鐨勭瓫閫?nbsp;
insert into cttag(articleid,classid,nclassid) select a.articleid,a.classid,a.nclassid from ctarticle a left join cttag b on a.articleid=b.articleid where b.articleid is null
涓婁緥涓殑寤剁畫
select a.*, b.*, c.*, d.*
from cttag as d left join ((ctarticle as a left join ctclass as b on a.classid=b.classid) left join ctnclass as c on a.nclassid=c.nclassid) on d.articleid=a.articleid;
鏄劇ず鏂囩珷琛ㄤ腑鐨勫叏閮? 璋冪敤綾誨埆琛ㄤ腑鐨勬爮鐩?nbsp;
select a.*, b.*, c.* from (ctarticle a left join ctclass b on a.classid=b.classid) left join ctnclass c on a.nclassid=c.nclassid
//浣滅敤, 鏈夋椂鍦ㄦ枃绔犺〃涓寘鍚簡鍦ㄤ釜鍒被鍒〃涓病鏈夌殑鏁版嵁, 鐢ㄨ繖涓娉曞彲浠ヨ鍑烘枃绔犺〃鐨勫叏閮ㄦ暟鎹?nbsp;
//a 涓?鏂囩珷琛? b 涓轟富綾誨埆, c 涓哄瓙綾誨埆
鍚屼笂渚? 閫夋嫨榪藉姞鏁版嵁鏃跺姞涓婄┖鏍?nbsp;
insert into cttag(articleid,classid,nclassid,tag)
select a.articleid,a.classid,a.nclassid,d.class+' '+c.nclass
from (ctarticle as a left join (ctnclass c left join ctclass d on c.classid=d.classid) on a.classid=c.classid and a.nclassid=c.nclassid) left join cttag as b on a.articleid = b.articleid where a.classid=4 and a.nclassid=154;
榪炴帴n涓〃, 騫惰拷鍔犳暟鎹埌鍏朵腑涓涓〃, n=4
insert into cttag(articleid,classid,nclassid,tag)
select a.articleid,a.classid,a.nclassid,d.class+c.nclass
from (ctarticle as a left join (ctnclass c left join ctclass d on c.classid=d.classid) on a.classid=c.classid and a.nclassid=c.nclassid) left join cttag as b on a.articleid = b.articleid where a.classid=1 and a.nclassid=1;
榪炴帴涓や釜琛? 騫惰拷鍔犳暟鎹埌鍏朵腑涓涓〃
insert into cttag(articleid,classid,nclassid)
select a.articleid,a.classid,a.nclassid
from ctarticle as a left join cttag as b on a.articleid = b.articleid where a.classid=1 and a.nclassid=1;
鍙沖榪炴帴
select a.*, b.* from bunclass a right join ctclass b on a.classid=b.classid where a.nclassid=20
鏌ヨ鍒悕 a,b 琛? 鍙尮閰?b 琛ㄤ腑鐨勫唴瀹?
娣誨姞鏁版嵁鍒拌繛鎺ヨ〃涔嬩竴
insert into cttag ( tag, articleid ) select top 1 b.tag, a.articleid from ctarticle as a left join cttag as b on a.articleid = b.articleid where a.articleid order by a.articleid desc;
鍙橀氫腑鐨勭敤娉曚簩
insert into bureply
select b.*, a.classid, a.nclassid
from article as a inner join reply as b on a.articleid = b.articleid
where classid=50;
瀹為檯搴旂敤涓殑鍙橀?nbsp;
insert into butag ( tag, articleid, classid, nclassid)
select b.tag, a.articleid, a.classid, a.nclassid
from article as a inner join tag as b on a.articleid = b.articleid
where classid=24;
娣誨姞鏁版嵁鍒板叾浠栬〃
insert into butag ( tag, articleid )
select b.tag, a.articleid
from article as a inner join tag as b on a.articleid = b.articleid
where a.articleid<>false;
瀹為檯搴旂敤涓殑鍙橀?nbsp;
select b.tag, a.articleid, a.classid, a.nclassid
from article as a inner join tag as b on a.articleid = b.articleid
where a.classid=24;
鏌ヨ
select b.tag, a.articleid
from article as a inner join tag as b on a.articleid = b.articleid
where a.articleid<>false;
]]>SQL涓璉N,NOT IN,EXISTS,NOT EXISTS鐨勭敤娉曞拰宸埆http://www.tkk7.com/justfang/archive/2009/12/22/306933.htmljustjustTue, 22 Dec 2009 09:26:00 GMThttp://www.tkk7.com/justfang/archive/2009/12/22/306933.htmlhttp://www.tkk7.com/justfang/comments/306933.htmlhttp://www.tkk7.com/justfang/archive/2009/12/22/306933.html#Feedback0http://www.tkk7.com/justfang/comments/commentRss/306933.htmlhttp://www.tkk7.com/justfang/services/trackbacks/306933.htmlSQL涓璉N,NOT IN,EXISTS,NOT EXISTS鐨勭敤娉曞拰宸埆:
IN:紜畾緇欏畾鐨勫兼槸鍚︿笌瀛愭煡璇㈡垨鍒楄〃涓殑鍊肩浉鍖歸厤銆?br />
IN 鍏抽敭瀛椾嬌鎮(zhèn)ㄥ緱浠ラ夋嫨涓庡垪琛ㄤ腑鐨勪換鎰忎竴涓煎尮閰嶇殑琛屻?br />
褰撹鑾峰緱灞呬綇鍦?California銆両ndiana 鎴?Maryland 宸炵殑鎵鏈変綔鑰呯殑濮撳悕鍜屽窞鐨勫垪琛ㄦ椂錛屽氨闇瑕佷笅鍒楁煡璇細(xì)
SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID = 1 OR CategoryID = 4 OR CategoryID = 5
鐒惰岋紝濡傛灉浣跨敤 IN錛屽皯閿叆涓浜涘瓧絎︿篃鍙互寰楀埌鍚屾牱鐨勭粨鏋滐細(xì)
SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID IN (1, 4, 5)
IN 鍏抽敭瀛椾箣鍚庣殑欏圭洰蹇呴』鐢ㄩ楀彿闅斿紑錛屽茍涓旀嫭鍦ㄦ嫭鍙蜂腑銆?br />
涓嬪垪鏌ヨ鍦?titleauthor 琛ㄤ腑鏌ユ壘鍦ㄤ換涓縐嶄功涓緱鍒扮殑鐗堢◣灝戜簬 50% 鐨勬墍鏈変綔鑰呯殑 au_id錛岀劧鍚庝粠 authors 琛ㄤ腑閫夋嫨 au_id 涓?br />
titleauthor 鏌ヨ緇撴灉鍖歸厤鐨勬墍鏈変綔鑰呯殑濮撳悕錛?nbsp;
SELECT au_lname, au_fname FROM authors WHERE au_id IN (SELECT au_id FROM titleauthor WHERE royaltyper < 50)
緇撴灉鏄劇ず鏈変竴浜涗綔鑰呭睘浜庡皯浜?50% 鐨勪竴綾匯?br />
NOT IN:閫氳繃 NOT IN 鍏抽敭瀛楀紩鍏ョ殑瀛愭煡璇篃榪斿洖涓鍒楅浂鍊兼垨鏇村鍊箋?br />
浠ヤ笅鏌ヨ鏌ユ壘娌℃湁鍑虹増榪囧晢涓氫功綾嶇殑鍑虹増鍟嗙殑鍚嶇О銆?br />
SELECT pub_name FROM publishers WHERE pub_id NOT IN (SELECT pub_id FROM titles WHERE type = 'business')
浣跨敤 EXISTS 鍜?NOT EXISTS 寮曞叆鐨勫瓙鏌ヨ鍙敤浜庝袱縐嶉泦鍚堝師鐞嗙殑鎿嶄綔錛氫氦闆嗕笌宸泦銆備袱涓泦鍚堢殑浜ら泦鍖呭惈鍚屾椂灞炰簬涓や釜鍘熼泦鍚堢殑鎵鏈夊厓绱犮?br />
宸泦鍖呭惈鍙睘浜庝袱涓泦鍚堜腑鐨勭涓涓泦鍚堢殑鍏冪礌銆?br />
EXISTS:鎸囧畾涓涓瓙鏌ヨ錛屾嫻嬭鐨勫瓨鍦ㄣ?nbsp;
鏈ず渚嬫墍紺烘煡璇㈡煡鎵劇敱浣嶄簬浠ュ瓧姣?B 寮澶寸殑鍩庡競涓殑浠諱竴鍑虹増鍟嗗嚭鐗堢殑涔﹀悕錛?br />
SELECT DISTINCT pub_name FROM publishers WHERE EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type =
'business')
SELECT distinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_id FROM titles WHERE type = 'business')
涓よ呯殑鍖哄埆:
EXISTS:鍚庨潰鍙互鏄暣鍙ョ殑鏌ヨ璇彞濡?SELECT * FROM titles
IN:鍚庨潰鍙兘鏄鍗曞垪:SELECT pub_id FROM titles
NOT EXISTS:
渚嬪錛岃鏌ユ壘涓嶅嚭鐗堝晢涓氫功綾嶇殑鍑虹増鍟嗙殑鍚嶇О錛?br />
SELECT pub_name FROM publishers WHERE NOT EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type =
'business')
涓嬮潰鐨勬煡璇㈡煡鎵懼凡緇忎笉閿鍞殑涔︾殑鍚嶇О:
SELECT title FROM titles WHERE NOT EXISTS (SELECT title_id FROM sales WHERE title_id = titles.title_id)