首先你得告訴我,你的正序條件是什么!比如說你的正序條件是name這個字段,也就是說,name字段進(jìn)行正序排列,如果name字段存儲的數(shù)據(jù)分別為aaa,bbb,ccc。那么按照name字段正序排列的話sql語句就是這樣的:select * from xxx order by name asc
創(chuàng)新互聯(lián)公司專注于棗陽企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),電子商務(wù)商城網(wǎng)站建設(shè)。棗陽網(wǎng)站建設(shè)公司,為棗陽等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
如果按照name反向排列的話就是這樣的:select * from xxx order by name desc
MySQL中排序輸出需要用order by。
如圖,test表中有如下數(shù)據(jù):
現(xiàn)在分別要求按ID正序和倒序輸出結(jié)果。
正序:
select?*?from?test?order?by?id;
結(jié)果:
倒序:
select?*?from?test?order?by?id?desc;
結(jié)果:
2.1 排序方式
數(shù)據(jù)量小則在內(nèi)存排序, 數(shù)據(jù)量大則使用磁盤排序
內(nèi)存排序 : 直接使用"快速排序"
磁盤排序 : 先將數(shù)據(jù)分塊, 對每個獨(dú)立的塊使用"快速排序", 并將各個塊的排序結(jié)果存在磁盤上, 然后將各個排好序的塊進(jìn)行合并(merge), 最后返回排序結(jié)果
2.2 排序算法
3. 注意點(diǎn) :
為這個問題 專門寫了一個mysql function,實(shí)現(xiàn)的功能是,返回前幾條記錄。其實(shí)還可以在完善的,返回這些記錄的數(shù)據(jù)的。
delimiter $$
drop function if exists top7$$
create function top7(num int(11))
returns int(11)
begin
declare totalPrice int;
declare i int;
declare countNum int;
declare tmp int;
select count(1) into countNum from mywcd;
set i=0;
set totalPrice=0;
set tmp=0;
tt:
while icountNum
do
set tmp=(select price from mywcdlimit i,1);
set i=i+1;
set totalPrice=totalPrice+tmp;
if totalPrice=num then
leave tt;
end if;
end while;
return i;
end;
$$
delimiter ;
mysql select * from mywcd;
+—-+——-+
| id | price |
+—-+——-+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
| 4 | 400 |
| 5 | 500 |
| 6 | 600 |
+—-+——-+
6 rows in set (0.00 sec)
這是我測試數(shù)據(jù)的表全部記錄。
調(diào)用以及返回結(jié)果:
mysql select top7(1001);
+————+
| top7(1001) |
+————+
| 5 |
+————+
1 row in set (0.00 sec)