逻辑之间的SQL

时间:2012-03-17 16:28:26

标签: mysql

enter image description here

鉴于我想在包含的最小和最大容量(即大于等于/小于等于)内列出场地的名称和价格,使用下面的SQL语句就足够了吗?有没有更好的呈现方式?

SELECT * FROM rooms WHERE capacity between '$minimum' AND '$maximum'

我只是想知道,因为它让我感到困惑。

如果minimum是0且maximum是1000 - 那么SQL选择满足语句标准的行的逻辑是什么?

2 个答案:

答案 0 :(得分:3)

看起来这对我来说很好,但我不确定你对此感到困惑。就像你说的那样,“之间”标准选择从最小值到最大值的所有内容。

根据this page,一些(未命名的)数据库将BETWEEN实现为独占而不是包含(即,它不会选择等于$ minimum或$ maximum的值)。因此,用两个明确的不等式替换你的标准可能更安全:

where capacity >= $minimum and capacity <= $maximum

答案 1 :(得分:2)

是的,这是正确的。有关BETWEEN如何运作的说明,请参阅§11.3.2 "Comparison Functions and Operators" in the MySQL 5.6 Reference Manual;正如您所看到的,它确实提供了包容性的最小值和最大值,正如您所需。

尽管如此,虽然您的查询完全正确,但最好将'$minimum' AND '$maximum'更改为$minimum AND $maximum(无引号),这样才能直观地看出这些是数字,而不是字符串。