代码之家  ›  专栏  ›  技术社区  ›  DerKlops

在SQL中运行数字

sql
  •  3
  • DerKlops  · 技术社区  · 15 年前

    SELECT name FROM users WHERE deleted = 0;
    

    如何创建第一行中有运行编号的结果集?因此,结果如下所示:

    1 Name_1
    2 Name_3
    3 Name_12
    4 Name_15
    ...
    
    3 回复  |  直到 15 年前
        1
  •  10
  •   Quassnoi    15 年前

    在里面 Oracle , SQL Server PostreSQL 8.4 :

    SELECT  ROW_NUMBER() OVER (ORDER BY name)
    FROM    users
    WHERE   deleted = 0
    

    在里面 MySQL

    SELECT  @r := @r + 1 AS rn
    FROM    (
            SELECT  @r := 0
            ) vars, users
    WHERE   deleted = 0
    ORDER BY
            name
    

    在里面 PostgreSQL 8.3 :

    SELECT  num, (arr[num]).*
    FROM    (
            SELECT  generate_series(1, array_upper(arr, 1)) AS num, arr
            FROM    (
                    SELECT  ARRAY
                            (
                            SELECT  users
                            FROM    users
                            ORDER BY
                                    name
                            ) AS arr
                    ) q
            ) q2
    
        2
  •  3
  •   Hakan Winther    15 年前

    SELECT row_number() OVER(ORDER BY myColumn) FROM myTable
    
        3
  •  0
  •   Lou Franco    15 年前

    这取决于您的DBMS——在Oracle中,您可以在select中使用rownum。没有标准的SQL方法,但大多数DBMS都支持某种方法来实现。

    以下是mysql:

    http://jimlife.wordpress.com/2008/09/09/displaying-row-number-rownum-in-mysql/

    这是SQL Server

    http://samsudeenb.blogspot.com/2008/09/how-to-generate-rownum-in-sql-server.html