복붙노트

[SQL] MySQL의 쿼리에 일련 번호를 생성

SQL

MySQL의 쿼리에 일련 번호를 생성

나는 테이블이 있습니다 student_marks를

marks
-----
  44
  55
  64
  98
  76

예상 출력 :

serial_number|marks
--------------------
  1          | 44
  2          | 55
  3          | 64
  4          | 98
  5          | 76

MySQL의 사용자 정의 변수를 사용하여,이 쿼리를 사용하여 수행 할 수 있습니다 :

 set  @a:=0;select @a:=@a+1 serial_number, marks from student_marks;

사용자 정의 변수를 사용하지 않고 MySQL의에이를 수있는 방법이 있습니까?

해결법

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

    1.다음을 사용할 수 inializing 2 개 쿼리를 피하기 위해 원하는대로 사용자 정의 변수를 사용하는 한 그것을 사용하고자하지에 대한 귀하의 이유에 기반 :

    다음을 사용할 수 inializing 2 개 쿼리를 피하기 위해 원하는대로 사용자 정의 변수를 사용하는 한 그것을 사용하고자하지에 대한 귀하의 이유에 기반 :

    SELECT  @a:=@a+1 serial_number, 
            marks 
    FROM    student_marks,
            (SELECT @a:= 0) AS a;
    
  2. ==============================

    2.이 질문에 대한 우수 답변은 다음, 가장 좋은 방법이어야한다

    이 질문에 대한 우수 답변은 다음, 가장 좋은 방법이어야한다

    SET @count:=0;
    SELECT  (@count:=@count+1) AS serial_number, 
            marks 
    FROM    student_marks
    
  3. ==============================

    3.나는 숫자 X를 포함, 나는 시간의 같은 행 X 숫자를 반복하여 SQL 식을 필요로 한 열 (C5)와 테이블을했다 :

    나는 숫자 X를 포함, 나는 시간의 같은 행 X 숫자를 반복하여 SQL 식을 필요로 한 열 (C5)와 테이블을했다 :

    내 테이블 A에는 다음이 포함됩니다

    c1  c2  c3  c4  c5
    16  1   2   16  3
    16  1   2   17  2 
    16  1   2   18  1
    

    나는이 필요합니다

    c1  c2  c3  c4  c5  n
    16  1   2   16  3   1
    16  1   2   16  3   2
    16  1   2   16  3   3
    16  1   2   17  2   1
    16  1   2   17  2   2
    16  1   2   18  1   1
    

    나는 표현과 그 해결 :

    SELECT
        c1, c2, c3, c4, c5, row_number AS n
    FROM
        (
            SELECT
                @curRow := @curRow + 1 AS row_number
            FROM
                tablea
            JOIN (SELECT @curRow := 0) r
            WHERE
                @curRow < (
                    SELECT
                        max(field1)
                    FROM
                        tablea
                )
        ) AS vwtable2
    LEFT JOIN tablea d ON vwtable2.row_number <= tablea.field1;
    
  4. ==============================

    4.아니, 없다. 하지만 당신은 프로그램 측의 SERIAL_NUMBER, 데이터베이스가 아닌면을 생성 할 수 있습니다.

    아니, 없다. 하지만 당신은 프로그램 측의 SERIAL_NUMBER, 데이터베이스가 아닌면을 생성 할 수 있습니다.

  5. ==============================

    5.왜 당신은 자동 증가 필드하지 않습니다?

    왜 당신은 자동 증가 필드하지 않습니다?

    http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

  6. ==============================

    6.별도의 질의에 널 (null)로 변수를 초기화 할 필요가로 위의 답변 중 어느 것도 만족스러운 것 같았다.

    별도의 질의에 널 (null)로 변수를 초기화 할 필요가로 위의 답변 중 어느 것도 만족스러운 것 같았다.

    모든 포괄적 인 솔루션 아래를 올리기 그래서 :

    SELECT ROUND(@a:=@a+1,0) sr_num, t.* from (select @a:=0) initvars, your_table t;
    
  7. ==============================

    7.아니, 당신은이 숫자를 포함하는 열이없는 경우.

    아니, 당신은이 숫자를 포함하는 열이없는 경우.

  8. ==============================

    8.아주 늦게 답변, 두 개의 질의를하지 않고 조인 사용하지 않고 서브 쿼리를 사용하지 않고 순차적으로 ID를 생성 비록.

    아주 늦게 답변, 두 개의 질의를하지 않고 조인 사용하지 않고 서브 쿼리를 사용하지 않고 순차적으로 ID를 생성 비록.

    SELECT *, (@cnt := if(@cnt IS NULL, 0,  @cnt) + 1) AS id FROM table_name;
    

    건배

  9. from https://stackoverflow.com/questions/11094466/generate-serial-number-in-mysql-query by cc-by-sa and MIT license