1

我正在写一个简单的 between 语句。

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

4 回答 4

2

我想你只是想订购你的结果。

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)
于 2011-08-10T17:45:59.847 回答
1

也许一个范围对你有用。

IN (4,3,2,1)

另一个想法,为什么不使用:

WHERE mid < 4 and mid > 1

或者

WHERE mid !> 4 and mid !< 1
于 2011-08-10T17:35:50.573 回答
1

我从不使用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
于 2011-08-10T17:46:15.283 回答
0

表达式X BETWEEN Y AND Z等价于X >= Y AND X <= Z。内置的假设是这样的Y <= Z,我不相信没有这种假设就没有办法让 BETWEEN 工作。不过,您可以将其用作解决方法:

...
WHERE X BETWEEN Y AND Z 
   OR X BETWEEN Z AND Y
于 2011-08-10T17:47:22.990 回答