안녕하세요
중복 값들은 추출해서 그 중 idx가 작은값의 sort 를 +1 해주려고 합니다.
idx name sort
1 a 1
2 b 2
3 c 3
4 d 2
5 e 5
이렇게 db값이 들어가있다고 할때 sort 값이 중복 된 두 행 (즉 idx 2번과 4번 ) 을 불러 와서
그중 idx값이 더 작은 것을 (즉 idx 2번)의 sort 값을 +1 해주는 방법이 있을까요?
Q1. 그 중 idx 값이 더 작은 것의 sort 값을 +1 해주는 방법
Q2. 이 방법이 안된다면 순위를 바꾸려고 하는 값을 제외한 EX(4순위를 2순위로 기존의 2순위의 값도 있습니다.)
값들을 +1 해주는 방법도 있을까요? 기존의 2순위의 값이 중복값으로 같이 값이 변경이 안되거나 같이 +1이 되고있습니다.
위의 예시대로 된다면...
idx name sort
1 a 1
2 b 3
3 c 3
4 d 2
5 e 5
이런 데이터가 될텐데, 그렇다면 SORT 3번이 중복되겠는데요...?
혹시 중복된 SORT 숫자가 없을때 까지 순차적으로 저런 작업을 해줘야 한다는 것인가요..?
먼저 put 값으로 $get_sort를 입력받아옵니다 그러면 4번째 에 있는 글을 2번째로 바꾸려고 2를 입력하면 db에는 정상적으로 2가 입력이되고 2보다 작은 1을 제외한 나머지값들이 +1 이 됩니다.
-> UPDATE table_name SET sort=sort+1 where sort>".$get_sort."
그러면 sort값이 1 2 4 2 6 이 됩니다.
그러나 기존의 2값이 업데이트가 되지 않아 2가 중복이 됩니다.
그래서 기존의 2의 값만 +1을 시켜주는 업데이트를 한번더하려고 하는데 방법이 있을까요?
문법은 모르겠지만...
아마 이런식의 단계를 가져야 할듯 합니다.
UPDATE table_name SET sort=sort+1 where sort>= [$바꾸려는 sort 번호] and sort < [원래 sort 번호];
UPDATE table_name SET sort=[$바꾸려는 sort 번호] where idx = [바꾸려는 idx 번호];
음... 그런데 생각해보니 이런 구성은 sort 값이 큰 값에서 작은 값으로 변경할때만 가능할듯 한데...
고민을 좀 더 해봐야 겠는데요...?
조인을 활용해서 해결하였습니다 도와주셔서 감사합니다!