dimastik1986
@dimastik1986
учусь

Есть ли разница в вариантах записи?

Есть ли разница, как я использую скобки ( ) или тут это не важно?

например

SELECT * FROM `orders` WHERE `act_dt` > (NOW() - INTERVAL 30 DAY) AND valid='on' ORDER BY `id` DESC

или
SELECT * FROM `orders` WHERE `act_dt` > NOW() - INTERVAL 30 DAY AND valid='on' ORDER BY `id` DESC



или

SELECT * FROM `orders` WHERE (`act_dt` BETWEEN '12.12.2019' AND '15.15.2019') AND valid='on' ORDER BY `id` DESC

или
SELECT * FROM `orders` WHERE `act_dt` BETWEEN '12.12.2019' AND '15.15.2019' AND valid='on' ORDER BY `id` DESC

  • Вопрос задан
  • 29 просмотров
Решения вопроса 1
orlov0562
@orlov0562
I'm cool!
В MySQL вот такой приоритет операций: https://dev.mysql.com/doc/refman/8.0/en/operator-p...
-- высший приоритет
INTERVAL
BINARY, COLLATE
!
- (unary minus), ~ (unary bit inversion)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
= (comparison), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
AND, &&
XOR
OR, ||
= (assignment), :=
-- низший приоритет


скобки, позволяют его изменить
mysql> SELECT 1+2*3;
        -> 7
mysql> SELECT (1+2)*3;
        -> 9


все тоже самое в твоем примере:
`act_dt` > (NOW() - INTERVAL 30 DAY)
`act_dt` > NOW() - INTERVAL 30 DAY

разницы не будет, тк вычитание приоритетнее сравнения

(`act_dt` BETWEEN '12.12.2019' AND '15.15.2019') AND valid='on' 
`act_dt` BETWEEN '12.12.2019' AND '15.15.2019' AND valid='on'

разницы не будет, т.к. BETWEEN приоритетнее AND, однако в этом примере, если в коде используется именно SQL я бы оставил скобки, чтобы визуально отделить BETWEEN
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
TheRonCronix
@TheRonCronix
В приведенных примерах никакой разницы нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы