2013-03-08 2 views
3

내 데이터베이스에 published라는 플래그가 있습니다. 게시 된 행에 대해 1로 설정합니다. 내 질문은 거기에 다른 모든 행을 0으로 설정하고 단 하나의 쿼리를 사용하여 특정 행을 1로 설정하는 것입니다. 사용하는 순간 메신저에서 1을 제외한 모든 행 설정

:

$db->query("UPDATE my_table SET published = '0'"); 
$db->query("UPDATE my_table SET published = '1' WHERE id = '$id'"); 

답변

4
UPDATE my_table SET published = IF (id = $id,1,0); 
1

사용에게 CASE 문을

UPDATE my_table 
SET published = CASE 
    WHEN id = '$id' THEN 1 
    ELSE 0 END 
0

MySQL의에서, 거기에 더 부울 유형 (조건이 정수를 반환)입니다, 그래서이 너무 작동합니다 :

UPDATE my_table 
SET published = (id = $id); 

id = $id은 $ id가 id와 다른 경우 0을 반환하고 그렇지 않으면 1을 반환합니다.

관련 문제