MySQL: вопрос о ВЫБОРЕ, ГДЕ И/ИЛИ

Я пытаюсь записать запрос, который возвращает тот же результат трех различных событий, но я думаю, что делаю его неправильно. Я могу выполнить свой запрос против одного идентификатора события, и он работает. Как я могу выбрать все три? Вот то, что я имею до сих пор:

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"
7
задан Andrew 10 May 2010 в 17:29
поделиться

4 ответа

SELECT * 
FROM `Registrations`  
WHERE `Role` = "Attendee" 
    AND `RegistrationStatus_ID` = "1" 
    AND `DigSignature` IS NULL 
    AND `Event_ID` in ("147", "155", "160")
29
ответ дан 6 December 2019 в 05:42
поделиться
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
ответ дан 6 December 2019 в 05:42
поделиться

И и ИЛИ имеют одинаковый приоритет .

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
ответ дан 6 December 2019 в 05:42
поделиться

Вы должны заключать операторы 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")
0
ответ дан 6 December 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: