上星期面試遇到以為面試官問我一道sql題,一張學生表,一張班級表,一張中間表,統計每個班級裡的人數,這個用group by也不難,問題是後面加了個問題,每個班級統計過的人不要再統計,這改的有點脫離現實,不過如果真遇到這種問題還是需要處理,當時做不出來,回來上網查了些資料,然後得出答案
select c.`cname`,count(1) from c c left join r r on c.`id`=r.`cid` left join s s on s.`id` = r.`sid` where r.`id` in (select min(r.`id`) from r r group by r.`sid`) group by r.`cid`
r為中間表,s為學生表,c為班級表
這道題還是比較經典的,記錄一下。
MySQL不插入重覆記錄
想插入一條記錄,如果有則不插入,無則插入。表示由乙個自增長id主鍵和其他幾個記錄 t version id,package name,first,second,third,forth 原先想用insert ignore into,但是發現沒有用,因為它把id也看做不同。於是我找了網上的另外一種方法 ...
Mysql的統計重覆記錄
雖說sql語法,這些主流的資料庫引擎都支援,但是每乙個資料庫引擎都有自己的特性,例如統計並顯示非重複的資料。mysql的實現形式是 資料庫test id name 1 agle 2 blibli 3 cat 4 cat 5 blibli 比如我想用一條語句查詢得到name不重複的所有資料,那就必須使...
利用mysql的dual表達到不插入重覆記錄
insert into book chapter del book id,chapter id,status select 20049198 1000930,0 from dual where not exists select from book chapter del where book id...