Близко, но без сигары.:)
SELECT * FROM table
WHERE (x BETWEEN 20 AND 80) AND
(y BETWEEN 20 AND 120) AND
(z BETWEEN 10 AND 40) LIMIT 0 , 30
Для объяснения, серверы SQL обычно оценивают x BETWEEN val1 AND val2
так же, как x >= val1 AND x <= val2
.При написании исходного запроса первое условие будет x >= 120 AND x <= 20)
, что, очевидно, не соответствует вашим ожиданиям.
Скобки вокруг различных условий гарантируют, что каждое из них будет полностью оценено до того, как будет рассмотрено И,Большую часть времени в SQL имеет значение, и даже если это не так, то лучше использовать их, чтобы ваши намерения были ясны через 6 месяцев, когда вам (или кому-то еще) придется снова посмотреть на запрос.