Оператор T-SQL Between - PullRequest
       29

Оператор T-SQL Between

1 голос
/ 10 августа 2011

Я пишу простое утверждение между.

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?Если вы попытаетесь выполнить это, вернется пустой набор данных.

Ответы [ 4 ]

2 голосов
/ 10 августа 2011

Я думаю, вы просто хотите упорядочить свои результаты.

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)
1 голос
/ 10 августа 2011

Я никогда не использую 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
1 голос
/ 10 августа 2011

Возможно, вам подойдет диапазон.

IN (4,3,2,1)

Еще одна мысль, почему бы не использовать:

WHERE mid < 4 and mid > 1

или

WHERE mid !> 4 and mid !< 1
0 голосов
/ 10 августа 2011

Выражение X BETWEEN Y AND Z эквивалентно X >= Y AND X <= Z. Встроенное допущение состоит в том, что Y <= Z, и я не верю, что есть какой-либо способ заставить МЕЖДУ работать без этого допущения. Вы можете использовать это как обходной путь, хотя:

...
WHERE X BETWEEN Y AND Z 
   OR X BETWEEN Z AND Y
...