Нет результатов при выполнении запроса - PullRequest
0 голосов
/ 25 октября 2018

Я создал запрос, который не будет показывать никаких результатов, если у меня есть оператор с кавычками над оператором ORDER BY, но оператор ORDER BY будет работать, если я удалю кавычки в моем запросе WHERE, но мне нужно гдезапрос.

Например:

WHERE S.STUDENT_ID = E.STUDENT_ID AND Z.STATE = 'New York' OR Z.STATE = 'MA'
ORDER BY Z.ZIP;

Если я удаляю AND Z.STATE = 'New York' OR Z.STATE = 'MA', это работает

1 Ответ

0 голосов
/ 25 октября 2018

Из-за порядка правил операций в SQL AND имеет более высокий приоритет , чем OR, поэтому ваше текущее предложение WHERE интерпретируется следующим образом:

WHERE (S.STUDENT_ID = E.STUDENT_ID AND Z.STATE = 'New York') OR Z.STATE = 'MA'
ORDER BY Z.ZIP;

Таким образом, это будет верно только в том случае, если идентификаторы учащихся соответствуют и , штат Нью-Йорк.Вы, вероятно, намереваетесь сделать следующее:

WHERE S.STUDENT_ID = E.STUDENT_ID AND (Z.STATE = 'New York' OR Z.STATE = 'MA')
ORDER BY Z.ZIP;

Один прием, который вы могли бы использовать здесь, чтобы избежать этой ловушки, заключался бы в использовании WHERE IN (...):

WHERE S.STUDENT_ID = E.STUDENT_ID AND Z.STATE IN ('New York', 'MA')
ORDER BY Z.ZIP;

Это исключает необходимость даже использоватьскобки, чтобы вы не ошиблись.

...