[DB][mariadb] 두 행의 특정 컬럼값 교환하는 쿼리

상황

테이블에서 선택된 두 행(two rows) 에 대해서 특정 컬럼값을 서로 교환하는 쿼리

  • 특정 폴더에 속한 두 파일의 순서를 서로 교환함

mysql, mariadb 디비 전용 쿼리

샘플 table schema

SQL
CREATE TABLE `tm_db` ( `seq` int(11) NOT NULL, `orders` int(11) DEFAULT NULL, PRIMARY KEY (`seq`) );
  • seq - primary key
  • orders - 교환하려는 컬럼값

아래와 같이 데이터가 존재할때

TXT
seq|orders| ---+------+ 1| 12| << 2| 8| 3| 7| <<

1번과 3번의 orders를 교환하고 싶음

update join query

update 쿼리
UPDATE tm_db AS t1 JOIN tm_db AS t2 ON t1.seq =1 AND t2.seq = 3 SET t1.orders = t2.orders, t2.orders = t1.orders;

결과 테이블

TXT
seq|orders| ---+------+ 1| 7| << 2| 8| 3| 12| <<