복붙노트

[SQL] 서열 번호 MySQL과 열을 갱신

SQL

서열 번호 MySQL과 열을 갱신

나는 열이있는 테이블이 있습니다 (이것은 단지 예입니다 내가 50K 기록이)

Name,   Number

Joe     Null
Michael Null
Moses   Null

이 같이 표시됩니다 그래서 나는 1-3에서 일련 번호로 번호를 업데이트합니다 :

Name,   Number

Joe     1
Michael 2
Moses   3

어떻게 하나의 SQL 명령에서 MySQL을위한 SQL에서 그것을 할 수 있습니다

해결법

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

    1.

    SET @rank:=0;
    update T
    set Number=@rank:=@rank+1;
    

    최신 정보

    하나의 문을 또 다른 방법

    UPDATE T
    JOIN (SELECT @rank := 0) r
    SET Number=@rank:=@rank+1;
    
  2. ==============================

    2.숫자가 생성됩니다 있도록 AUTO_INCREMENT에 수를 설정을 시도 할 수 :

    숫자가 생성됩니다 있도록 AUTO_INCREMENT에 수를 설정을 시도 할 수 :

    ALTER TABLE your_table MODIFY Number INT AUTO_INCREMENT
    

    그 외에는, 당신은 아마 필요합니다 : a) 저장된 루틴 b) 애플리케이션 코드

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

    3.나는 온라인 답을 찾기 위해 분투 다음과 같은 방법은 위와 같지만 다른 업데이트 방법과 정보의 일부를 기반으로, 나를 위해 일한 발견했다. 경우에 여기에 게시 너무 다른 사람을 도움이됩니다.

    나는 온라인 답을 찾기 위해 분투 다음과 같은 방법은 위와 같지만 다른 업데이트 방법과 정보의 일부를 기반으로, 나를 위해 일한 발견했다. 경우에 여기에 게시 너무 다른 사람을 도움이됩니다.

    참고 : 내 데이터 집합, 순위가 한 번 고정 계산, 그것은 변경되지 않습니다. 나는 계산을 내가 파이썬으로 MySQL의에서 데이터를 가져 때마다 실행 저장하는 컬럼으로 추가하고 싶었다.

    솔루션 내가 사용 :

    사용되는 샘플 명칭은, ROWID가 값이 각 행의 순위를 결정하는 데 사용된다는 것을 메트릭 각 행에 대한 고유 식별자

    SET @rank=0;
    CREATE TEMPORARY TABLE rank_temp
    AS
    (SELECT rowid, value, @rank:=@rank+1 AS rank FROM source_table ORDER BY value ASC);
    
    UPDATE sourcetable a, rank_temp b
    SET a.rank = b.rank
    WHERE a.rowid = b.rowid;
    

    그것은 원유 방법입니다하지만 내 데이터 세트에 근무하고있다.

  4. from https://stackoverflow.com/questions/6617056/updating-columns-with-a-sequence-number-mysql by cc-by-sa and MIT license