在 SQL 中,BETWEEN 语句是不是必须采用 BETWEEN 最低和最高形式?

Posted

技术标签:

【中文标题】在 SQL 中,BETWEEN 语句是不是必须采用 BETWEEN 最低和最高形式?【英文标题】:In SQL, does a BETWEEN statement have to be of the form BETWEEN lowest AND highest?在 SQL 中,BETWEEN 语句是否必须采用 BETWEEN 最低和最高形式? 【发布时间】:2009-06-20 16:43:41 【问题描述】:

例如,如果我这样做了:

SELECT * FROM Users WHERE UserId BETWEEN 100 AND 1

结果如何?

编辑:对不起,你是对的,我应该指定的。我不想知道将返回的确切行数,我只想知道它是否会返回介于 1 和 100 之间的行,或者是否会返回从 min(UserId) 到 1 和 100 到 max(UserId) 的行.

【问题讨论】:

+1,因为我不确定为什么这被否决了 - 诚然,它可能有更多细节 - 但如果你投反对票,至少请礼貌地对你的理由发表评论:) +1 同意。被否决当然也不错。 Andomar 已经回答了这个问题。 +1 我想不出有什么理由会被否决!我很想知道为什么。 我投了反对票。也许我今天心情不好,但不知道为什么尝试一下或快速浏览一下文档会不会更好。 将该语句放在 SQL 提示符中并查看它返回的内容比将其作为问题发布在 SO 上花费的时间更少。 【参考方案1】:
a BETWEEN b AND c

是简写

b <= a and a <= c

所以 BETWEEN 100 和 1 不会匹配任何内容。

【讨论】:

当你说 b Matt:不,因为这两个集合的交集是空的(AND 运算符)。如果使用 OR,你会是正确的。【参考方案2】:

这可能取决于您的 RDBMS,但为什么不尝试一下呢?在 mysql 上,我从 BETWEEN 100 AND 1 查询中没有得到任何行,而我确实从请求 BETWEEN 1 和 100 中得到行。

【讨论】:

以上是关于在 SQL 中,BETWEEN 语句是不是必须采用 BETWEEN 最低和最高形式?的主要内容,如果未能解决你的问题,请参考以下文章

如何在同一列或不同列的一个sql语句中两次使用'BETWEEN'条件

sql 语句问题,关于BETWEEN AND 和DATE 的

sql语句条件里between的用法

【SQL语句】-范围查询

Datetime BETWEEN 语句在 SQL Server 中不起作用

如何在 SQL 的 WHERE CLAUSE 中的 CASE 内添加 sql“BETWEEN”条件