복붙노트

[SQL] 어떻게 열 및 업데이트 테이블의 값을 정렬하려면?

SQL

어떻게 열 및 업데이트 테이블의 값을 정렬하려면?

나는 SQL로 완전히 새로 온 사람과 자신을 그렇게 할 수 없습니다. 그래서 나는 당신의 도움이 필요합니다. 나는 열에서 값을 정렬 한 후 변경 사항을 저장합니다. 하지만 그렇게하는 방법을 모르겠어요.

같은 테이블 외모 :

Id | Name | SomeDescription
---------------------------
1  |Best  | Description1
2  |Worth | Description2
3  |Good  | Description3

나는 그런 일을하고 싶지 :

Id | Name | SomeDescription
---------------------------
1  |Best  | Description1
2  |Good  | Description3
3  |Worth | Description2

나는 "ID"와 "이름"열을 정렬 할 필요가 그래서.

나는 "이름"열 정렬 값으로 문을 다음 사용

SELECT * FROM games ORDER BY name ASC

그러나 어떻게 id 컬럼과 테이블에 변경 저장 값을 정렬 할 수 있습니다? 도와주세요.

해결법

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

    1.당신은 두 번째 테이블을 사용하는 것

    당신은 두 번째 테이블을 사용하는 것

    이 단계는 당신이 원하는 발생합니다.

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

    2.당신은 행 번호를 다시 지정하기 위해 ROW_NUMBER 순위 기능을 사용할 수 있습니다.

    당신은 행 번호를 다시 지정하기 위해 ROW_NUMBER 순위 기능을 사용할 수 있습니다.

    SELECT UnsortedId = id
    , SortedId = ROW_NUMBER() OVER (ORDER BY g.name, g.id)
    FROM games 
    
  3. ==============================

    3.당신은 간단 테이블 변경 명령을 사용할 수 있습니다.

    당신은 간단 테이블 변경 명령을 사용할 수 있습니다.

    mysql> ALTER TABLE games ORDER BY name asc;
    

    그게 다야 !

  4. ==============================

    4.간단하다. 몇 가지 코드를 사용합니다. 나는 이것을 시도하며 노력하고 있습니다. 동시에 값을 정렬하는 동안 먼저 임시 테이블을 만들 수 있습니다.

    간단하다. 몇 가지 코드를 사용합니다. 나는 이것을 시도하며 노력하고 있습니다. 동시에 값을 정렬하는 동안 먼저 임시 테이블을 만들 수 있습니다.

        create table new as select * from games order by name;
    

    다음, 게임 테이블을 사용하여 삭제

        drop table games;
    

    사용 (여기 정렬하는 것은 선택 사항입니다) 지금 새로운에서와 동일한 속성 및 데이터 다시 게임 테이블을 생성,

        create table games as select * from new order by name;
    

    이제 임시 테이블을 드롭 '새로운'

        drop table new;
    

    지금 당신의 표를 확인. 그것은 정리해야합니다.

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

    5.당신은 동시에 두 개의 필드를 정렬 할 수 있습니다.

    당신은 동시에 두 개의 필드를 정렬 할 수 있습니다.

    SELECT *
    FROM games
    ORDER BY id DESC, name ASC
    

    난 당신이 테이블에 변경 저장 무슨 뜻인지 이해가 안 돼요. 순서에, 그냥 당신이 업데이트를 수행하지 않는 한이 테이블의 데이터를 변경하지 않습니다에서 찾고있는 디스플레이를 변화하고 있습니다.

    당신은 SQL에 익숙하지 않은 경우, 온라인 자습서의 많은 그 캔 도움이 있습니다

    SQL 코스

    초급 SQL 자습서

    SQL 자습서 - SQL 알아보기

    의견에 따라 편집,이 한 단계에서 수행 할 수 있습니다 :

    create table #temp
    (
        id int,
        name varchar(50),
        somedesc varchar(50)
    )
    
    insert into #temp values (1, 'best', 'desc1')
    insert into #temp values (2, 'worth', 'desc2')
    insert into #temp values (3, 'good', 'desc3')
    
    update t1
    SET t1.id = t2.rn
        , t1.somedesc = t1.somedesc
    FROM #temp t1
    JOIN 
    (
        select id, name, somedesc, row_number() over(order by name, id) as rn
        from #temp 
    ) t2
    on t1.id = t2.id
    
    select *
    from #temp
    order by id
    
    drop table #temp
    
  6. ==============================

    6.이것은 내 수정 ... 바보 간단하다 :

    이것은 내 수정 ... 바보 간단하다 :

    SELECT SortKeyValue는 SourceTable FROM INTO #Temp (단지 기존의 시퀀스를 포함하지 않는, 다른 고정 된 값을 추가)

    TRUNCATE TABLE SourceTable

    INSERT INTO SourceTable (SortKeyValue, DisplayOrder (더하기 다른 필드)) SELECT SortKeyValue, ROW_NUMBER () OVER (SortKeyValue BY ORDER) AS DispOrd #Temp FROM (및 다른 필드);

  7. ==============================

    7.SQL> 게임 SELECT * FROM ORDER BY ID, NAME;

    SQL> 게임 SELECT * FROM ORDER BY ID, NAME;

  8. from https://stackoverflow.com/questions/10079750/how-to-sort-values-in-columns-and-update-table by cc-by-sa and MIT license