寫出了一條有點難度的sql語句。

2022-01-12 19:18:24 字數 599 閱讀 8673

表結構如下

a 表**webid,**名稱webname

b 表使用者userid,所屬**webid,註冊時間regtime

咋一看:很簡單  select  a.id,a.name ,count(*)  as regnumber  from  a inner jion b on a.webid=b.webid  

where  datediff(d,b.regtime,'yyyy-mm-dd')=0 group by a.id,a.name

但是事情沒有那麼簡單,如 果某**在這一天沒有使用者註冊,那麼該**不會被列出來,

所以要使用左連線:

select  a.id,a.name ,count(*)  as regnumber  from  a   left outer join  b on a.webid =b.webid  

where  datediff(d,b.regtime,'yyyy-mm-dd')=0 group by a.id,a.name

問題出現了,某行資料如果沒有使用者註冊的情況下 count(*)得到的結果應該是0,但卻總是顯示為1

最後把count(*) 改為count(b.userid),問題解決了!

一條SQL語句研究

現有 select from t where a in 5,3,2,1,8,9,30.假設 a 是主鍵,in裡面的引數是唯一的。現要求輸出的結果集按照 in 提供的引數順序排序。而不是按照a本身的排序規則排序?另 如果不要求使用臨時表或表變數,那麼又有什麼辦法實現。臨時表方案參卡 create ta...

一條sql 語句的優化

第二個版本 一條sql搞定,使用巢狀查詢,費時2 3分鐘 select a.indexid,c.title,c.createdtime,c.intro,d.picurl,e.src,e.size,e.info from mms content index a,mms index node b,mms...

一條分頁的SQL語句

在網頁中如果顯示的資料太多就會佔據過多的頁面,而且顯示速度也會很慢。為了控制每次在頁面上顯示資料的數量,就可以利用分頁來顯示資料。select top pagesize from table where id notin select top prenum id from table order b...