본문 바로가기
MySql

MySQL : 다른 행의 데이터 스왑

by 베이스 공부 2020. 12. 29.
반응형

다음과 같은 fruits 테이블을 가정 해보십시오.

------------------------------------------
| id |    name    |   color   | calories |
------------------------------------------
| 1  | apple      | red       | 20       |
| 2  | orange     | orange    | 10       |
| 3  | grapes     | green     | 5        |
| 4  | bananas    | yellow    | 15       |
| 5  | plum       | purple    | 25       |
------------------------------------------

ID 번호는 그대로두고 행의 값을 다른 행으로 교환 하려면 어떻게해야합니까?

예:

SWAP ROW WITH ID "5" WITH ROW WITH ID "2"

결과:

------------------------------------------
| id |    name    |   color   | calories |
------------------------------------------
| 1  | apple      | red       | 20       |
| 2  | plum       | purple    | 25       |
| 3  | grapes     | green     | 5        |
| 4  | bananas    | yellow    | 15       |
| 5  | orange     | orange    | 10       |
------------------------------------------

ID를 제외한 모든 값은 그대로 유지됩니다. 정말 큰 값 목록으로이 작업을 수행해야하므로 한 줄짜리 또는 기껏해야 임시 테이블을 만들 필요가없는 무언가가 필요합니다.

참고 : ID는 고유합니다.

감사합니다

 

해결 방법

 

조인 부등식을 사용하여 스왑하려는 행을 정렬 할 수 있습니다.

update fruit a
 inner join fruit b on a.id <> b.id
   set a.color = b.color,
       a.name = b.name,
       a.calories = b.calories
 where a.id in (2,5) and b.id in (2,5)


 

참조 페이지 https://stackoverflow.com/questions/17433666

 

 

반응형

댓글