Необходимость скобок в предложении sqlite запроса - PullRequest
0 голосов
/ 01 ноября 2018

Я выполняю следующие запросы sqlite3 и замечаю, что первые два запроса не дают мне ожидаемого ответа, то есть 1240969 + 1225691! = 1531026. Если я использую скобки вокруг предложений 'или', я получаю ожидаемый результат. Почему это?

sqlite> select count(*) from d where county = "A" or county = "D" and year = "1911";
1240969
sqlite> select count(*) from d where county = "A" or county = "D" and year = "1901";
1225691
sqlite> select count(*) from d where county = "A" or county = "D";
1531026
sqlite> select count(*) from d where (county = "A" or county = "D") and year = "1901";
748015
sqlite> select count(*) from d where (county = "A" or county = "D") and year = "1911";
783011

1 Ответ

0 голосов
/ 01 ноября 2018

Между 2 операторами AND и OR, AND имеет приоритет, поэтому это:

county = "A" or county = "D" and year = "1911"

оценивается как

county = "A" or (county = "D" and year = "1911")

так что это не то же самое:

(county = "A" or county = "D") and year = "1911"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...