2012-07-20 2 views
1

메뉴 구조의 카테고리 및 주문 ID를 기반으로 데이터베이스의 테이블 순서를 변경하려고 시도했습니다. 이 같은MYSQL IF 카테고리별로 순서를 변경하십시오.

UPDATE yourtable SET id=IF(id=2, 3, 2) where id in(2,3) 

: :이 오류를 얻고있다

UPDATE menu 
SET order = IF(order = `3`, `2`, `3`) 
WHERE order = `3` 

내가이 구문을 시도

menuid menuname  order categoryid 
-------------------------------------- 
1  firstitem  1  1 
2  seconditem  2  1 
3  thirditem  1  2 
4  fourthitem  2  2

테이블 구조로 대략 무슨이다 :

You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 'order = IF(order = `3`, `2`, `3`) 
WHERE order = `3`' at line 2

솔루션 코드 :

UPDATE menu 
SET `order` = case when `order` = 3 then 2 else 3 end 
WHERE `order` = 3 AND section = 2 OR `order` = 2 AND section = 2 
+1

모든 백틱은 무엇입니까? 이름 한정자로 값을 인용해서는 안됩니다. 숫자는 따옴표로 묶지 않거나 아포스트로피로 인용 할 수 있습니다. –

답변

1

order에 의해

UPDATE menu 
SET `order` = case when `order` = 3 
        then 2 
        else `order` 
       end 

시도는 MySQL은 예약 된 단어입니다. 당신은 백틱으로 그것을 벗어나야 만합니다.

+0

WHERE 조건을 사용할 때 CASE는 필요하지 않습니다 :) – Madhivanan

+0

'주문'에 대한 해당 기능이 싫어 – Adsy2010

+0

주문을 단일 주문으로 입력하면 – Madhivanan

1

왜 CASE 표현식을 사용하지 않습니까? 당신의 의미는 없습니다.

UPDATE menu 
SET order = case when order = `3` then `2` else `3` end