欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL rownumber SQL生成自增長序號使用介紹

 更新時間:2011年10月29日 01:29:53   作者:  
MySQL 幾乎模擬了 Oracle,SQL Server等商業(yè)數(shù)據(jù)庫的大部分功能,函數(shù)。但很可惜,到目前的版本(5.1.33)為止,仍沒有實(shí)現(xiàn)ROWNUM這個功能

下面介紹幾種具體的實(shí)現(xiàn)方法.

建立實(shí)驗(yàn)環(huán)境如下
mysql> create table tbl (
    ->  id      int primary key,
    ->  col     int
    -> );
Query OK, 0 rows affected (0.08 sec)

mysql> insert into tbl values
    -> (1,26),
    -> (2,46),
    -> (3,35),
    -> (4,68),
    -> (5,93),
    -> (6,92);
Query OK, 6 rows affected (0.05 sec)
Records: 6  Duplicates: 0  Warnings: 0

mysql>
mysql> select * from tbl order by col;
+----+------+
| id | col  |
+----+------+
|  1 |   26 |
|  3 |   35 |
|  2 |   46 |
|  4 |   68 |
|  6 |   92 |
|  5 |   93 |
+----+------+
6 rows in set (0.00 sec)


1. 直接在程序中實(shí)現(xiàn);
這應(yīng)該算是效率最高的一種,也極為方便。直接在你的開發(fā)程序中(PHP/ASP/C/...)等中,直接初始化一個變量nRowNum=0,然后在while 記錄集時,nRowNum++; 然后輸出即可。

2. 使用MySQL變量;在某些情況下,無法通過修改程序來實(shí)現(xiàn)時,可以考慮這種方法。
缺點(diǎ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)接查詢(笛卡爾積)
缺點(diǎ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. 子查詢

缺點(diǎn),和聯(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)品。它的更新速度,文檔維護(hù)都不遜于幾大商業(yè)數(shù)據(jù)庫產(chǎn)品。估計在下一個版本中,我們可以看到由MySQL自身實(shí)現(xiàn)的ROWNUM。

相關(guān)文章

  • MySQL中JOIN連接的基本用法實(shí)例

    MySQL中JOIN連接的基本用法實(shí)例

    大家對join應(yīng)該都不會陌生,join可以將兩個表連接起來,下面這篇文章主要給大家介紹了關(guān)于MySQL中JOIN連接用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Navicat導(dǎo)入mysql數(shù)據(jù)庫的圖文教程

    Navicat導(dǎo)入mysql數(shù)據(jù)庫的圖文教程

    本文主要介紹了Navicat導(dǎo)入mysql數(shù)據(jù)庫的圖文教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • mysql 8.0 Windows zip包版本安裝詳細(xì)過程

    mysql 8.0 Windows zip包版本安裝詳細(xì)過程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0 Windows zip包版本安裝詳細(xì)過程,以及密碼認(rèn)證插件修改,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • MySQL?常用引擎總結(jié)分享

    MySQL?常用引擎總結(jié)分享

    這篇文章主要介紹了MySQL?常用引擎總結(jié)分享,MySQL有很多存儲引擎,所謂的存儲引擎是指用于存儲、處理和保護(hù)數(shù)據(jù)的核心服務(wù),更多常用引擎分享,需要的小伙伴可以參考下面文章內(nèi)容
    2022-06-06
  • MySQL?DDL執(zhí)行方式Online?DDL詳解

    MySQL?DDL執(zhí)行方式Online?DDL詳解

    這篇文章主要介紹了MySQL?DDL執(zhí)行方式Online?DDL詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-09-09
  • mysql 5.7.13 winx64安裝配置方法圖文教程(win10)

    mysql 5.7.13 winx64安裝配置方法圖文教程(win10)

    這篇文章主要為大家分享了mysql 5.7.13 winx64安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 數(shù)據(jù)庫中笛卡爾積定義、生成與避免策略實(shí)踐方法

    數(shù)據(jù)庫中笛卡爾積定義、生成與避免策略實(shí)踐方法

    笛卡爾積是指兩個集合中的每個元素都與另一個集合中的每個元素組合形成的所有元素的集合,這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫中笛卡爾積定義、生成與避免策略實(shí)踐的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • MySql總彈出mySqlInstallerConsole窗口的解決方法

    MySql總彈出mySqlInstallerConsole窗口的解決方法

    這篇文章主要介紹了MySql總彈出mySqlInstallerConsole窗口的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Linux平臺mysql開啟遠(yuǎn)程登錄

    Linux平臺mysql開啟遠(yuǎn)程登錄

    本文給大家分享的是在Linux平臺為MySQL開啟遠(yuǎn)程登錄連接的方法,有相同需求的小伙伴可以參考下
    2017-02-02
  • MySQL的索引詳解

    MySQL的索引詳解

    這篇文章主要介紹了MySQL的索引的一些資料,對于mysql的優(yōu)化來說索引是不得不說的,這里就為大家介紹一下,需要的朋友可以參考一下
    2018-01-01

最新評論