今天使用MySQL查詢,有幾個知識點
數據表 grades:
需要得到查詢結果:
sql語句:
select *, (select count(1) + 1 from grades B where A.gender = B.gender and A.grade < B.grade) as rank from grades A order by gender , grade desc;
參見:
select count(*)和select count(1)的區別
一般情況下,Select Count (*)和Select Count(1)兩着返回結果是一樣的
假如表沒有主鍵(Primary key), 那麼count(1)比count(*)快,
如果有主鍵的話,那主鍵作爲count的條件時候count(主鍵)最快
如果你的表只有一個字段的話那count(*)就是最快的
count(*) 跟 count(1) 的結果一樣,都包括對NULL的統計,而count(column) 是不包括NULL的統計select sum(1)的使用
select count(*)返回所有滿足條件的記錄數,此時同select sum(1)
但是sum()可以傳任意數字,負數、浮點數都可以,返回的值是傳入值n*滿足條件記錄數m