回覆列表
  • 1 # 使用者1844319796352

    方法一:

    為了實現row_number函式功能,此方法我們要使用到會話變數,下面的例項是從 employees 表中選出5名員工,併為每一行新增行號:

    1

    2

    3

    4

    5

    6

    SET @row_number = 0;

    SELECT

    (@row_number:=@row_number + 1) AS num, firstName, lastName

    FROM

    employees

    LIMIT 5;

    輸出結果:

    在這個例項中:

    首先,定義變數 @row_number ,並初始化為0;

    然後,在查詢時我們為 @row_number 變數加1。

    方法二:

    這種方法仍然要用到變數,與上一種方法不同的是,我們把變數當做派生表,與主業務表關聯查詢實現row_number函式功能。下面我們仍然以查詢5位員工為例:

    1

    2

    3

    4

    5

    SELECT

    (@row_number:=@row_number + 1) AS num, firstName, lastName

    FROM

    employees,(SELECT @row_number:=0) AS t

    LIMIT 5;

    這樣的輸出結果與上一種結果是一致的。

    需要注意的是,在這種方法中,派生表必須要有別名,否則執行時會出錯。

    為每一組新增行號

    瞭解ORACLE的朋友應該知道,row_number函式還有一個非常有用的功能就是分組排序 “over partition by” 。MySQL同樣可以實現這樣的功能,看下面的例項:

    首先將payments表中按照客戶將記錄分組:

  • 中秋節和大豐收的關聯?
  • 得了蝨該如何去救治呢?