(我对 SQL 有点陌生)我有很多要重写的查询,其中有一个where
像这样的子句:
where some_number > A
and some_number <= B
我想使用单个where
子句(行数更少,不是更快/更慢吗?),如下所示:
where some_number between A and B
问题是第一个子句在 A 上是排他的,在 B 上是包含的。有什么方法可以像第二个查询一样在单行上指定“包容性”?谢谢。
(我对 SQL 有点陌生)我有很多要重写的查询,其中有一个where
像这样的子句:
where some_number > A
and some_number <= B
我想使用单个where
子句(行数更少,不是更快/更慢吗?),如下所示:
where some_number between A and B
问题是第一个子句在 A 上是排他的,在 B 上是包含的。有什么方法可以像第二个查询一样在单行上指定“包容性”?谢谢。
几点...
首先,如果你使用更少的行,它只是“更少的行”。我会这样格式化它:
where some_number > A and some_number <= B
因为它实际上是一个范围条件,范围的每一端都是单独编码的。
其次,它实际上并不比 between 版本快或慢,因为在between A and B
幕后转换为:
where (some_number >= A) and (some_number <= B)
所以性能是相同的。
基本上,不用担心。
你可以用“+1”来抵消你的 a
或者只是使用你的第一个语法,它更容易阅读。