mysql 질문 update 문 조건
본문
a b
10 0
10 0
10 0
11 0
12 0
13 0
a 항목에 10인 값중 위에서 2번째까지만 b항목에 점수를 주려고 합니다.
update g5_shop_cart set a = a +1 group by a having a=10 limit 0, 1
update g5_shop_cart set a = a +1 group by a having a=10 limit 1, 2
로 하니 안되더군요.
for문으로 돌려야 하나요? 방법이 있을까요?
고수님들의 의견 부탁드려요.
답변 2
"a 항목에 10인 값중 위에서 2번째까지만 b항목에 점수를 주려고 합니다."라고 적어놓고
예문은 "update g5_shop_cart set a = a +1 group by a having a=10 limit 0, 1"인데
a 항목이 10인 값 중, 2개만 b의 값을 1 증가시켜주는 것이 목적인가요?
질문의 데이터만으로는 대상이 명확하지 않고,
문제[*]가 있긴 하지만 어쨌거나 아래처럼 업데이트 가능하긴 합니다.
UPDATE g5_shop_cart SET b=b+1 WHERE a=10 LIMIT 2
* Note: Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
update g5_shop_cart set a = a +1
where id in
(select id from g5_shop_cart group by a having a=10 limit 0,1)
이런식으로는 안되던가요?
직접 해본건 아닙니다. ^^