有一張表,表內容如下所示:
注意點:
①如上所示,表中沒有標識關於行號的字段,比如id神馬的
②不准修改表結構,比如使用alter
語句
查了一些資料,發現具體的思路大概是,自行生成自增的行號列,然後根據模2的結果進行奇偶的篩選。順著這個思路下去,會發現oracle中的具體思路是直接使用其提供的row_number函式,而mysql中思路其實差不多,只不過是曲線救國,因為mysql並沒有提供row_number函式,所以需要你自己先去實現它,然後和oracle的操作方法就差不多了。
1.row_numberrow_number() over(partition by col1 order by col2) 表示根據col1分組,在分組內部根據col2排序,而此函式計算的值就表示每組內部排序後的順序編號(組內是連續且唯一的)。oracle中通過查詢資料,發現也可以分為兩種,一種比較中規中矩點(長一點哈~)2.mod
語法:mod(number,divisor)
引數:
number 為被除數。
divisor 為除數。如果 divisor 為零,函式 mod 返回值 為原來number
說明:
函式mod可以借用函式 int 來表示:
mod(n, d) = n - d*int(n/d)
select * from (select row_number() over (order
by name asc) a,t.* from test t) where mod(a,2)=0;
算是嚴格按照row_number使用路子來滴:
先對列name按照公升序,再為每條記錄返回乙個序列號:還有一種簡潔點,如下所示:
select * from (select rownum row_num, t.* from test t)
where
mod(row_num, 2)=1
mysql中其實是借助於變數的形式,進行近似row_number的實現,但是要注意的是如果想要重新查詢的話,變數要初始化哦~
set @row = 0;
select * from (select @row:=case
when @row
isnull
then
1else @row+1
endas rnr,name,age,class from test) t where t.rnr%2 = 0;
sql查詢奇數行、偶數行
mysql row number()排序函式的用法和注意
oracle row_number()
oracle mod 表示式
請問oracle如何查詢奇數行資料
sql 查詢多個表
直接黏貼sql cook book上的資料 1 select ename as ename and dname,deptno 2 from emp 3 where deptno 10 4 union all 5 select null 6 from t1 7 union all 8 select d...
SQL連表查詢
感覺好笨,老大寫過想了一會才想明白。因為資料都是在兩個表中的兩個表中,所以是四個表。應該先把乙個表中的兩個表篩選出來,然後再用union.sql union 操作符 union 操作符用於合併兩個或多個 select 語句的結果集。請注意,union 內部的 select 語句必須擁有相同數量的列。...
sql聯表查詢
比如 all list 這個表,是包含所有資料的,我們要把整個資料的某些字段查詢出來顯示在列表上 select from all list select 現在我要檢視一條資料,需要根據表 user list 的乙個字段內容,去檢視另外乙個表 info list 的內容 select dept nam...