상품순서 순차적으로 일괄변경
본문
안녕하세요. 항상 도움주셔서 감사합니다.
상품을을 최신꺼부터 올려서 최신께 가장 뒤에있는데 순서를 변경하려고 하는데 상품순서가 ㅁ낳아서요
g5_shop_item 테이블에
it_order 부분을 순차적으로 변경하면 될거같은데
저는 한번에 변경하는 명령어만 알아서요 ㅠ
혹시이걸
특정부분에서 ~ 특정부분까지
1 , 2 , 3 , 4 , 5 이런식으로 순차적으로 적용되게 명령어를 못할까요?
update g5_shop_item set it_order = 1 where it_id > 71489;
이런식인데 이건 모두 1로 바꾸는거라서요 ㅠ
답변 3
DROP TABLE IF EXISTS `zoo2`;
CREATE TABLE IF NOT EXISTS `zoo2` (
`it_id` int(11) NOT NULL AUTO_INCREMENT,
`it_order` int(11) NOT NULL,
PRIMARY KEY (`it_id`),
KEY `it_order` (`it_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `zoo2` VALUES (1, 0);
INSERT INTO `zoo2` VALUES (2, 0);
INSERT INTO `zoo2` VALUES (3, 0);
INSERT INTO `zoo2` VALUES (4, 0);
INSERT INTO `zoo2` VALUES (5, 0);
INSERT INTO `zoo2` VALUES (71490, 0);
INSERT INTO `zoo2` VALUES (71491, 0);
INSERT INTO `zoo2` VALUES (71492, 0);
INSERT INTO `zoo2` VALUES (71493, 0);
INSERT INTO `zoo2` VALUES (71494, 0);
INSERT INTO `zoo2` VALUES (71495, 0);
INSERT INTO `zoo2` VALUES (71496, 0);
INSERT INTO `zoo2` VALUES (71497, 0);
INSERT INTO `zoo2` VALUES (71498, 0);
INSERT INTO `zoo2` VALUES (71499, 0);
INSERT INTO `zoo2` VALUES (71500, 0);
단순하게 하면
where 절의 it_id + 1 하면 되는데
it_id가 순차가 아닐때 중간에 이빨이 빠지므로
UPDATE `zoo2` SET it_order = (it_id - 71490 + 1) WHERE it_id >= 71490;
서브쿼리를 사용해봤더니
업데이트가 반영된 max를 못 뽑아옵니다
UPDATE `zoo2` SET it_order = (SELECT * FROM (SELECT MAX(it_order) FROM `zoo2` WHERE it_id >= 71490) AS t) + 1 WHERE it_id >= 71490;
그래서 순차값을 입력하기 위해
!-->!-->!-->!-->
정확하게 어떤걸 원하시는지는 모르겠지만.. 서브쿼리를 활용해도 좋고 또는 PHP에서
쿼리를 두개 만들어서 순차적으로 업데이트를 하는 방법도 좋을거 같습니다~
update g5_shop_item set it_order = it_order + 1 where it_id > 71489;
이걸 원하시는 건가요??
답변을 작성하시기 전에 로그인 해주세요.