sql條件語(yǔ)句使用實(shí)例
sql條件語(yǔ)句是sql語(yǔ)句中非常重要的,在我們平時(shí)的數(shù)據(jù)庫(kù)使用中經(jīng)常會(huì)用得到,在處理一些具體問(wèn)題時(shí),就可以體現(xiàn)出sql條件語(yǔ)句的優(yōu)勢(shì)了。
假定博客園要在首頁(yè)為群組開(kāi)辟一塊空間,推廣小組,小組能在首頁(yè)顯示的條件有四個(gè):
1. 頁(yè)面點(diǎn)擊量大于10w
2. 小組人數(shù)大于1000
3. 小組帖子數(shù)大于10000
4. 小組在2007年之前創(chuàng)建
現(xiàn)在假定4個(gè)條件都滿足的小組只有兩個(gè),太少了,推廣位可以推廣10個(gè)小組;這時(shí)候運(yùn)營(yíng)人員要求這4個(gè)條件中滿足3個(gè)但是第4個(gè)條件不滿足的小組算符合條件的小組,如果4個(gè)條件都滿足就認(rèn)為這個(gè)小組太火了,不需要在首頁(yè)推廣它了。業(yè)務(wù)邏輯想清楚了,下一步就該寫(xiě)代碼了,數(shù)據(jù)邏輯層的代碼的任務(wù)假定交給我了,我要考慮滿足4個(gè)條件中3個(gè)成立的sql怎么寫(xiě)。
為了敘事方便,我們假如小組表的名字為Group,相關(guān)的條件字段是Pv,UserCount,PostCount,CreateTime:分別表示小組的點(diǎn)擊量,人數(shù),帖子數(shù),創(chuàng)建時(shí)間.
寫(xiě)sql語(yǔ)句,上面的四個(gè)條件滿足至少3個(gè),有多少種情況呢?這是一個(gè)組合問(wèn)題,一共有多少種的公式我已經(jīng)忘記了,我要根據(jù)感覺(jué)寫(xiě)寫(xiě)看:
- SELECT * FROM Group
- WHERE (Pv>100000 AND UserCount>1000 AND PostCount>10000 AND CreateTime > 20070101)
- OR (Pv>100000 AND UserCount>1000 AND PostCount<10000 AND CreateTime < 20070101)
- OR (Pv>100000 AND UserCount<1000 AND PostCount>10000 AND CreateTime < 20070101)
這個(gè)Sql語(yǔ)句條件還行,但是我們的題目是n個(gè)條件m個(gè)條件成立,如果多了還這么寫(xiě),恐怕就很累了,能不能改進(jìn)呢?答案是肯定的。
- SELECT * FROM Group
- WHERE
- (CASE Pv WHEN Pv>100000 THEN 1 ELSE 0 END) --這是PV的條件成立則為1,否則為0
- +(CASE UserCount WHEN UserCount > 1000 THEN 1 ELSE 0 END) --用戶數(shù)條件
- +(CASE PostCount WHEN PostCount > 10000 THEN 1 ELSE 0 END) --帖子數(shù)條件
- +(CASE CreateTime WHEN CreateTime < 20070101 THEN 1 ELSE 0 END) --時(shí)間條件
- = 3
如果上面的三個(gè)表達(dá)式加起來(lái)值是3就說(shuō)明恰好滿足三個(gè)條件,如果是兩個(gè)條件就是等于2,如果擴(kuò)展為n個(gè)條件m個(gè)條件成立也很容易寫(xiě),很容易維護(hù)、修改。
這是一個(gè)sql條件語(yǔ)句的技巧,希望對(duì)你有用。
【編輯推薦】