2010-05-10 6 views
6

세 가지 다른 이벤트에서 같은 결과를 반환하는 쿼리를 작성하려고하지만 잘못된 생각입니다. 하나의 이벤트 ID에 대해 내 쿼리를 실행할 수 있으며 작동합니다. 어떻게 세 가지를 모두 선택할 수 있습니까?MySQL : 질문에 대한 SELECT WHERE AND OR OR

SELECT * FROM `Registrations` 
WHERE `Role` = "Attendee" AND `RegistrationStatus_ID` = "1" AND `DigSignature` IS NULL 
    AND `Event_ID` = "147" OR `Event_ID` = "155" OR `Event_ID` = "160" 

답변

25
SELECT * 
FROM `Registrations` 
WHERE `Role` = "Attendee" 
    AND `RegistrationStatus_ID` = "1" 
    AND `DigSignature` IS NULL 
    AND `Event_ID` in ("147", "155", "160") 
+4

이번 '빠른 게시'상을 수상한 것 같습니다. –

+0

고맙습니다. – Andrew

+1

쿼리 디스플레이가 좋습니다! – lean

0

당신은 괄호 안에 포장 또는 진술해야합니다 : 여기에 지금까지 가지고 무엇

SELECT * FROM `Registrations` 
WHERE `Role` = "Attendee" AND `RegistrationStatus_ID` = "1" AND `DigSignature` IS NULL 
    AND (`Event_ID` = "147" OR `Event_ID` = "155" OR `Event_ID` = "160") 
2
SELECT * FROM `Registrations` 
WHERE `Role` = "Attendee" AND `RegistrationStatus_ID` = "1" AND `DigSignature` IS NULL 
    AND (`Event_ID` = "147" OR `Event_ID` = "155" OR `Event_ID` = "160") 

당신이 또는 혼합 AND와 할 때, 그것은 괄호를 사용하는 것이 도움이 함께 물건을 그룹화합니다. 논리가 필요하지 않을 때도 때로는 다른 사람들이 당신의 의도를 이해하는 데 도움이됩니다.

1

ANDOR은 동일한 우선 순위를 갖는다.

SELECT * FROM `Registrations` 
WHERE `Role` = "Attendee" AND `RegistrationStatus_ID` = "1" AND `DigSignature` IS NULL 
    AND (`Event_ID` = "147" OR `Event_ID` = "155" OR `Event_ID` = "160")