對於employees表中,輸出first_name排名(按first_name公升序排序)為奇數的first_name
create
table
`employees`
(`emp_no`
int(11)
notnull
,`birth_date`
date
notnull
,`first_name`
varchar(14
)not
null
,`last_name`
varchar(16
)not
null
,`gender`
char(1
)not
null
,`hire_date`
date
notnull
,primary
key(
`emp_no`))
;
如,輸入為:
insert
into employees values
(10001
,'1953-09-02'
,'georgi'
,'facello'
,'m'
,'1986-06-26');
insert
into employees values
(10002
,'1964-06-02'
,'bezalel'
,'simmel'
,'f'
,'1985-11-21');
insert
into employees values
(10005
,'1955-01-21'
,'kyoichi'
,'maliniak'
,'m'
,'1989-09-12');
insert
into employees values
(10006
,'1953-04-20'
,'anneke'
,'preusig'
,'f'
,'1989-06-02'
);
輸出格式:
georgi
anneke
因為georgi按first_name排名為3,anneke按first_name排名為1,所以會輸出這2個
思路:先排出號碼 然後再去奇數
1.利用count函式 排號
select
count(*
)from employees e2 where e1.first_name>=e2.first_name
2.然後取奇數
select e1.first_name from employees e1
where
(select
count(*
)from employees e2 where e1.first_name>=e2.first_name)%2
=1;
先排序還是先取值
題目 ms sqlserver和oracle中取出表中按照某欄位排序的前n條記錄 這個題目看上去似乎那麼簡單 兩種資料庫都提供 order by 子句.問題應該能夠迎刃而解吧 先試一下 ms sqlserver 是怎麼做的 use northwind create table testsort id...
先排序還是先取值
先排序還是先取值 題目 mssqlserver和oracle中取出表中按照某欄位排序的前n條記錄 這個題目看上去似乎那麼簡單,兩種都提供orderby子句.問題應該能夠迎刃而解吧.先試一下mssqlserver是怎麼做的 usenorthwind createtabletestsort idinte...
oracle先排序再分頁
oracle排序分頁查詢和mysql資料庫的語句還不一樣,這裡做簡單的記錄。select a.rownum rn from select from v log a order by operatetime desc結果 可以發現,按時間排序了,但是rownum並不是從小到大,因為oracle是先生成...