1. 在MYsql中怎麼寫SQL語句,能取到表中按ID降序排列的前五條記錄
MYSQL中查詢表中按欄位降序排列的前N條記錄模式:
SELECT
欄位名[
,
欄位名...]
FROM
表名
WHERE
條件
LIMIT
數量
ORDER
BY
欄位名
DESC
例如:
select id,name,email from test where age < 19 limit 5 order by id desc;
上面例子從test表查詢所有age小於19的按id降序排序的前5條記錄的id,name,email信息。
LIMIT限制查詢數量,ORDER
BY指出按什麼排序,DESC表示按降序排序。
2. sql 語句查詢 前5名後5名的成績
不知道你的是什麼資料庫,我用oracle的寫法了。
兩種辦法:
分別求最大和最小,然後union all
select * from(select* from table order by 成績) where rownum<=5
union all
select * from(select* from table order by 成績 desc) where rownum<=5
利用排序,找到每個人的位置,然後輸出。排序的方法很多,可以用rownum排序,也可以用row_number()over()排序
我用row_number()over()寫一個
selecta.姓名,a.成績 from
(select row_number()over(order by 成績) num,姓名,成績 from table) a where a.num<=5 or
a.num>=(select count(*)-5 from table)
我沒實驗,不過就算有問題也應該不大。
sqlserver的版本是啥?是2005以上么?如果是
那麼利用那個row_number的應該也可以,不過為了讓分數一樣的人都出來,那麼最好改為
這種情況是假設前五齣現分數相同的話,假如前五名有六個人的情況,不過我沒有輸出名次,另外我上面的那種寫法也可以試試,sqlserver好像也可以。
不過如果你要是sql2005以前的版本那時sqlserver還沒有這幾個開窗函數,那就稍微有點麻煩了。
select姓名,成績 from
select rank()over(order by 成績) num,rank()over(order by 成績 desc) num_desc,姓名,成績 from table) a where a.num<=5 or a.num_desc<=5 order by 成績 desc
3. SQL語句:十個班裡各取前五名
--創建測試數據
declare @t table(ID int,xm varchar(20),total int,banji varchar(50))
insert @t
select 1,'張一',100,'A班' union all
select 2,'張二',200,'A班' union all
select 3,'張三',300,'A班' union all
select 4,'張四',400,'A班' union all
select 5,'張五',500,'B班' union all
select 6,'張六',600,'B班' union all
select 7,'張七',700,'B班' union all
select 8,'張八',800,'B班' union all
select 9,'張九',900,'C班' union all
select 10,'張十',1000,'C班' union all
select 11,'張十一',1100,'C班' union all
select 12,'張十二',1200,'C班'
--查詢
select * from @t a
where (select count(*) from @t b where b.banji = a.banji and b.total > a.total) < 3
--這里是前三名,前五名只需把這里的<3改為<5即可
--結果
/*
ID xm total banji
---------------------------------------------
2 張二 200 A班
3 張三 300 A班
4 張四 400 A班
6 張六 600 B班
7 張七 700 B班
8 張八 800 B班
10 張十 1000 C班
11 張十一 1100 C班
12 張十二 1200 C班
*/
4. 從表中檢索定購數量前五的產品的SQL語句怎麼寫
select * from OrderItem
where OrderItem.顧客號=Customer.顧客號 and OrderItem.商品號=Article.商品號
把這個先定義為A,這個表示顧客購買了商品
select * from Article where not exists A
定義為B,這個表示沒有被購買的商品
select Customer.顧客號,顧客名 from Customer where not exists B
這個就清楚多了,顧客沒有未購買的商品,那就是顧客買了所有商品
5. SQL語句查詢前五條記錄的問題
newstimes
重復的過多了吧? 用下面的代碼控制吧!
sql="select top 5 * from ddcompanynews order by newstimes DESC"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
For i=1 To 5
If rs.eof Then Exit For
response.Write "輸出內容"
rs.movenext
Next
rs.close
set rs=nothing
6. 如何手動找出當前資料庫的top 5的SQL語句
先排序,求出前5大,再排序,取1
select top 1 * from
( select top 5 * from table_name order by col_name desc )
order by col_name asc
7. sql 查詢前5項並排序
那你可以先查出前5行,然後再排序啊
select * from (select top 5 * from into)a order by i_sex ,i_age
默認就是升序排序,不用加asc
8. 用SQL列出資料庫成績的前五名學生的學號、姓名、成績
一樓的:
select student.學號,姓名,成績 FROM STUDENT,SCORE WHERE STUDENT.學號=SCORE.學號 ORDER BY 成績 DESC TOP 5 (本語句適合二級) 追問(急!!!)找出各科成績均在85分以上(含)的學生的學號、姓名 這個呢? 回答完就給分^-^
回答追問的:
select student.學號,姓名,min(成績) 最低分,max(成績) 最高分 FROM STUDENT,SCORE
WHERE STUDENT.學號=SCORE.學號
group by student.學號,姓名
having min(成績)>=85