考虑,我想一个包容性的最小和最大能力范围内列出场所的名称和价格(即大于和等于/小于和等于)将使用下面的SQL语句足够了?有更好的方式呈现它吗?
SELECT * FROM rooms WHERE capacity between '$minimum' AND '$maximum'
我只是想知道,因为它会让我感到困惑。
如果最小值为0,最大值为1000 - 什么是落后SQL的选择符合条件的语句行的逻辑是什么?
考虑,我想一个包容性的最小和最大能力范围内列出场所的名称和价格(即大于和等于/小于和等于)将使用下面的SQL语句足够了?有更好的方式呈现它吗?
SELECT * FROM rooms WHERE capacity between '$minimum' AND '$maximum'
我只是想知道,因为它会让我感到困惑。
如果最小值为0,最大值为1000 - 什么是落后SQL的选择符合条件的语句行的逻辑是什么?
是的,这是正确的。有关BETWEEN
如何工作的说明,请参阅§11.3.2 "Comparison Functions and Operators" in the MySQL 5.6 Reference Manual;正如你所看到的那样,它确实提供了一个包容性的最小值和最大值,正如你所需要的。这就是说,尽管你的查询是完全正确的,但是将'$minimum' AND '$maximum'
更改为$minimum AND $maximum
(不带引号)可能会更好,只是这样看起来很清楚,它们是数字,而不是字符串。
看起来会正常工作给我,但我不知道你感到困惑。就像你所说的,“之间”标准选择了从最低限度到最高限额的所有内容。
根据this page,一些(未命名的)数据库将BETWEEN实现为排他性的,而不是包含性的(也就是说,它不会选择等于$ minimum或$ maximum的值)。所以它可能是更安全有两个明确的不平等,而不是取代您的标准:
where capacity >= $minimum and capacity <= $maximum
我相信,你的发言将做的工作 - 只要确保第一个值是最低的,后'和'是最高的。进一步阅读:http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between根据MySQL的参考,between是另一种方式''= $ val1 AND <= $ val2' + 1也用于SC2建筑物。 – dan 2012-03-17 16:35:23