복붙노트

[SQL] 행 번호는 SQL 쿼리의 결과 집합에 추가

SQL

행 번호는 SQL 쿼리의 결과 집합에 추가

나는 간단한 select 문을 가지고있다. 나는 내 결과 세트의 행 번호를합니다 임시 열을 추가 할 수 있습니다. 나는이 시도 -

declare @num int
set @num = 0;
select t.A, t.B, t.C, (@count + 1) as number
from tableZ as t

그것은 모든 행에 1을 할당합니다. 나는 @count = @count + 1 시도하고 작동하지 않았다. 어떻게 간단한 방식으로이 일을해야합니까?

감사.

해결법

  1. ==============================

    1.다음과 같이 전형적인 패턴이 될 것이지만, 실제로 순서를 적용 할 방법을 정의해야합니다 (테이블의 행, 정의에 의해, 정렬되지 않은 가방이기 때문에)

    다음과 같이 전형적인 패턴이 될 것이지만, 실제로 순서를 적용 할 방법을 정의해야합니다 (테이블의 행, 정의에 의해, 정렬되지 않은 가방이기 때문에)

    SELECT t.A, t.B, t.C, number = ROW_NUMBER() OVER (ORDER BY t.A)
      FROM dbo.tableZ AS t
      ORDER BY t.A;
    

    확실하지 귀하의 질문에 변수가 대표로되어있는 것을 (그들은이 일치하지 않습니다).

  2. ==============================

    2.

    SELECT
        t.A,
        t.B,
        t.C,
        ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS number
    FROM tableZ AS t
    

    SQLFiddle에서 예를 들어 작업 참조

    물론, 당신은 행 번호 순서를 정의 할 수 있습니다 - 만약 그렇다면, 단지 BY 절 일반 ORDER에서처럼, 예를 들면, 대한 OVER (ORDER BY t.C)을 (ORDER BY는 (1) 선택) OVER 교환합니다.

  3. ==============================

    3.그래서 MySQL의 8.0 전에 더 ROW_NUMBER () 함수는 존재하지 않는다. MySQL의 이전 버전을 지원하기 위해 다시 Accpted 대답 :

    그래서 MySQL의 8.0 전에 더 ROW_NUMBER () 함수는 존재하지 않는다. MySQL의 이전 버전을 지원하기 위해 다시 Accpted 대답 :

    SET @row_number = 0;
    SELECT t.A, t.B, t.C, (@row_number:=@row_number + 1) AS number
    FROM dbo.tableZ AS t ORDER BY t.A;
    
  4. from https://stackoverflow.com/questions/20232641/add-a-row-number-to-result-set-of-a-sql-query by cc-by-sa and MIT license