鉴于我想在包含的最小和最大容量(即大于等于/小于等于)内列出场地的名称和价格,使用下面的SQL语句就足够了吗?有没有更好的呈现方式?
SELECT * FROM rooms WHERE capacity between '$minimum' AND '$maximum'
我只是想知道,因为它让我感到困惑。
如果minimum是0且maximum是1000 - 那么SQL选择满足语句标准的行的逻辑是什么?
答案 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
(无引号),这样才能直观地看出这些是数字,而不是字符串。