Я пишу простое утверждение между.
create table temp(mid int) insert into temp values (1),(2),(3),(4) select * from temp where mid between 4 and 1 drop table temp
Это выводит 1,2,3,4
Однако я хочу использовать это утверждение наоборот (я использую это какпростой пример в более сложной задаче).Можно ли как-нибудь написать между 4 и 1?Если вы попытаетесь выполнить это, вернется пустой набор данных.
Я думаю, вы просто хотите упорядочить свои результаты.
SELECT mid FROM temp WHERE mid BETWEEN 1 AND 4 ORDER BY mid DESC
В качестве альтернативы, вы можете использовать функцию in вместо:
SELECT mid FROM temp WHERE mid IN(4, 3, 2, 1)
Я никогда не использую BETWEEN, просто проще, гибче и понятнее просто использовать <, <=, > и >=.
BETWEEN
<
<=
>
>=
Я бы сделал это:
create table temp(mid int) insert into temp values (1),(2),(3),(4) select * from temp where mid<=4 and mid>=1 --same as where mid>=1 and mid<=4 -- ^^^^^^ ^^^^^^ drop table temp
Возможно, вам подойдет диапазон.
IN (4,3,2,1)
Еще одна мысль, почему бы не использовать:
WHERE mid < 4 and mid > 1
или
WHERE mid !> 4 and mid !< 1
Выражение X BETWEEN Y AND Z эквивалентно X >= Y AND X <= Z. Встроенное допущение состоит в том, что Y <= Z, и я не верю, что есть какой-либо способ заставить МЕЖДУ работать без этого допущения. Вы можете использовать это как обходной путь, хотя:
X BETWEEN Y AND Z
X >= Y AND X <= Z
Y <= Z
... WHERE X BETWEEN Y AND Z OR X BETWEEN Z AND Y