SQL to output line number in results of a query

后端 未结 5 480
忘了有多久
忘了有多久 2021-01-07 17:38

I would like to generate a line number for each line in the results of a sql query. How is it possible to do that?

Example: In the request

select di         


        
相关标签:
5条回答
  • 2021-01-07 18:10

    OR you could also do

    SELECT DISTINCT client_name, @num := @num + 1 AS lineNum(this is your new col)
    FROM deliveries
    JOIN (SELECT @num :=0) AS n ON 1=1;
    

    hope this helps too :)

    0 讨论(0)
  • 2021-01-07 18:11

    In SQL we are also using this query:

    select row_number() over (order by table_kid) as S_No ,table_columnname,table_columnname2 from tablename where table_fieldcondition='condtionnal falg or data ';
    

    Here table_kid or may be other table_columnname

    0 讨论(0)
  • 2021-01-07 18:23

    You can use the ROW_NUMBER function for this. Check the syntax for this here http://msdn.microsoft.com/en-us/library/ms186734.aspx

    SELECT FirstName, LastName, ROW_NUMBER() OVER(ORDER BY FirstName) AS 'Row#'    
    FROM Sales.vSalesPerson;
    

    For your query,

    SELECT client_name, ROW_NUMBER() Over (Order By client_name) AS row_number 
    FROM   (select distinct client_name from deliveries) SQ
    

    will work.

    0 讨论(0)
  • 2021-01-07 18:25

    It depends on the database you are using. One option that works for SQL Server, Oracle and MySQL:

    SELECT ROW_NUMBER() OVER (ORDER BY SomeField) AS Row, *
    FROM SomeTable
    

    Change SomeField and SomeTable is according to your specific table and relevant field to order by. It is preferred that SomeField is unique in the context of the query, naturally.

    In your case the query would be as follows (Faiz crafted such a query first):

    SELECT ROW_NUMBER() OVER (ORDER BY client_name) AS row_number, client_name
    FROM (SELECT DISTINCT client_name FROM deliveries) TempTable
    

    I think it won't work for SQLite (if someone can correct me here I would be grateful), I'm not sure what's the alternative there.

    0 讨论(0)
  • 2021-01-07 18:33

    In Oracle

    SQL> select row_number() over (order by deptno) as rn
      2         , deptno
      3  from
      4     ( select distinct deptno
      5            from emp
      6          )
      7  /
    
            RN     DEPTNO
    ---------- ----------
             1         10
             2         20
             3         30
    
    SQL>
    
    0 讨论(0)
提交回复
热议问题