mysql select * from a;
為麻城等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及麻城網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、麻城網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
+-----+
| col |
+-----+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
+-----+
8 rows in set (0.00 sec)
mysql set @i := 0; select @i := @i + 1 as `order`, a.* from a order by col desc;
+-------+-----+
| order | col |
+-------+-----+
| 1 | 7 |
| 2 | 6 |
| 3 | 5 |
| 4 | 4 |
| 5 | 3 |
| 6 | 2 |
| 7 | 1 |
| 8 | 0 |
+-------+-----+
8 rows in set (0.00 sec)
mysql
1. 直接在程序中實現(xiàn);
這應(yīng)該算是效率最高的一種,也極為方便。直接在你的開發(fā)程序中(PHP/ASP/C/...)等中,直接初始化一個變量nRowNum=0,然后在while 記錄集時,nRowNum++; 然后輸出即可。
2. 使用MySQL變量;在某些情況下,無法通過修改程序來實現(xiàn)時,可以考慮這種方法。
缺點,@x 變量是 connection 級的,再次查詢的時候需要初始化。一般來說PHP等B/S應(yīng)用沒有這個問題。但C/S如果connection一只保持則要考慮 set @x=0
mysql select @x:=ifnull(@x,0)+1 as rownum,id,col
- from tbl
- order by col;
+--------+----+------+
| rownum | id | col |
+--------+----+------+
| 1 | 1 | 26 |
| 1 | 3 | 35 |
| 1 | 2 | 46 |
| 1 | 4 | 68 |
| 1 | 6 | 92 |
| 1 | 5 | 93 |
+--------+----+------+
6 rows in set (0.00 sec)
3. 使用聯(lián)接查詢(笛卡爾積)
缺點,顯然效率會差一些。
利用表的自聯(lián)接,代碼如下,你可以直接試一下 select a.*,b.* from tbl a,tbl b where a.col=b.col 以理解這個方法原理。
mysql select a.id,a.col,count(*) as rownum
- from tbl a,tbl b
- where a.col=b.col
- group by a.id,a.col;
+----+------+--------+
| id | col | rownum |
+----+------+--------+
| 1 | 26 | 1 |
| 2 | 46 | 3 |
| 3 | 35 | 2 |
| 4 | 68 | 4 |
| 5 | 93 | 6 |
| 6 | 92 | 5 |
+----+------+--------+
6 rows in set (0.00 sec)
4. 子查詢
缺點,和聯(lián)接查詢一樣,具體的效率要看索引的配置和MySQL的優(yōu)化結(jié)果。
mysql select a.*,
- (select count(*) from tbl where col=a.col) as rownum
- from tbl a;
+----+------+--------+
| id | col | rownum |
+----+------+--------+
| 1 | 26 | 1 |
| 2 | 46 | 3 |
| 3 | 35 | 2 |
| 4 | 68 | 4 |
| 5 | 93 | 6 |
| 6 | 92 | 5 |
+----+------+--------+
6 rows in set (0.06 sec)
做為一款開源的數(shù)據(jù)庫系統(tǒng),MySQL無疑是一個不做的產(chǎn)品。它的更新速度,文檔維護都不遜于幾大商業(yè)數(shù)據(jù)庫產(chǎn)品。估計在下一個版本中,我們可以看到由MySQL自身實現(xiàn)的ROWNUM。
假如產(chǎn)品表為 tb ,表中有產(chǎn)品編號字段, 銷售表為 tb2有銷售數(shù)量字段,他們通過產(chǎn)品id關(guān)聯(lián)
如果是求所有銷售數(shù)量的總和
select tb.產(chǎn)品編號,svm(銷售數(shù)量) as 總銷售數(shù)量
from the inner join tb2 on tb.產(chǎn)品id=tb2.產(chǎn)品id