譬如有張學生成績統計單的表student_result
name number kemu fenshu
li 0113101 高數 90
zhang 0113098 高數 80
wang 0113077 高數 70
li 0113101 物理 80
zhang 0113098 物理 90
wang 0113077 物理 70
我如果要檢索出表中高數的前兩名和物理的前兩名
那麼可以通過使用 rank()方法達到目的
--首先 通過kemu進行分類,然後按照fenshu降序排序
select rank() over(partition by kemu order by fenshu desc) rk,t.* from student_result t
結果
rk name number kemu fenshu
1 li 0113101 高數 90
2 zhang 0113098 高數 80
3 wang 0113077 高數 70
1 zhang 0113098 物理 90
2 li 0113101 物理 80
3 wang 0113077 物理 70
--然後,檢索出rk<=2的記錄,即取出前兩名
select * from (select rank() over(partition by kemu order by fenshu desc) rk,t.* from student_result t) as y where y.rk<=2;
結果
rk name number kemu fenshu
1 li 0113101 高數 90
2 zhang 0113098 高數 80
1 zhang 0113098 物理 90
2 li 0113101 物理 80
dense_rank()和 rank()的用法完全相同,不同的是在出現分數相同的情況下
如name number kemu fenshu
li 0113101 高數 80
zhang 0113098 高數 80
wang 0113077 高數 70
li 0113101 物理 80
zhang 0113098 物理 90
wang 0113077 物理 70
select rank() over(order by fenshu desc) rk,t.* from student_result t
的結果為
rk name number kemu fenshu
1 zhang 0113098 物理 90
2 li 0113101 高數 80
2 zhang 0113098 高數 80
2 li 0113101 物理 80
5 wang 0113077 高數 70
5 wang 0113077 物理 70
而select dense_rank() over(order by fenshu desc) rk,t.* from student_result t
結果為
rk name number kemu fenshu
1 zhang 0113098 物理 90
2 li 0113101 高數 80
2 zhang 0113098 高數 80
2 li 0113101 物理 80
3 wang 0113077 高數 70
3 wang 0113077 物理 70
附 row_number()的使用
select row_number() over(order by fenshu desc) rk,t.* from student_result t
rk name number kemu fenshu
1 zhang 0113098 物理 90
2 li 0113101 高數 80
3 zhang 0113098 高數 80
4 li 0113101 物理 80
5 wang 0113077 高數 70
6 wang 0113077 物理 70
fetch n rows only
取出當前記錄的前多少行
如
select row_number() over(order by user_no) from user_files fetch first 5 rows only;
MYSQL 對錶中資料進行插入,更新,刪除
插入資料 1.為表的所有字段插入資料 1 不指定具體欄位名 insert into 表名 values 值1,值2,值n 每個值對應表中字段,值的型別要和字段資料型別相符 eg insert into employee values 001,huan,xian 2 列出表中所有字段,進行資料插入。可...
MySQL資料庫中對錶中的資料進行增刪改
dml 對錶中的資料進行增刪改 對某個表增加一行資料 insert into stu name,age,score values wang 19,90.8 除了數字型別以外,其他的型別都需要用單引號或雙引號引用起來。mysql insert into stu name,age,score value...
MySQL INSERT對錶中資料的操作 插入資料
1 insert values語句 insert values 的語法格式為 2 insert set語句 語法格式為 由 insert 語句的兩種形式可以看出 在student資料庫中建立乙個學生表,包含學生編號 id 學生姓名 name 學生年齡age輸入的 sql 語句和執行結果如下所示。my...