SQL

2012-03-17 42 views
0

enter image description hereSQL

考虑,我想一个包容性的最小和最大能力范围内列出场所的名称和价格(即大于和等于/小于和等于)将使用下面的SQL语句足够了?有更好的方式呈现它吗?

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

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

如果最小值为0,最大值为1000 - 什么是落后SQL的选择符合条件的语句行的逻辑是什么?

+0

我相信,你的发言将做的工作 - 只要确保第一个值是最低的,后'和'是最高的。进一步阅读: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

回答

2

是的,这是正确的。有关BETWEEN如何工作的说明,请参阅§11.3.2 "Comparison Functions and Operators" in the MySQL 5.6 Reference Manual;正如你所看到的那样,它确实提供了一个包容性的最小值和最大值,正如你所需要的。这就是说,尽管你的查询是完全正确的,但是将'$minimum' AND '$maximum'更改为$minimum AND $maximum(不带引号)可能会更好,只是这样看起来很清楚,它们是数字,而不是字符串。

3

看起来会正常工作给我,但我不知道你感到困惑。就像你所说的,“之间”标准选择了从最低限度到最高限额的所有内容。

根据this page,一些(未命名的)数据库将BETWEEN实现为排他性的,而不是包含性的(也就是说,它不会选择等于$ minimum或$ maximum的值)。所以它可能是更安全有两个明确的不平等,而不是取代您的标准:

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

虽然这被标记为MySQL。但是,除了这一点之外,我总是对W3School的准确性保持警惕。尽管它拥有丰富的良好信息,但它也提供了很多不正确的信息。请参阅http://w3fools.com/了解更多信息。 – dan 2012-03-17 16:46:48

+0

确实如此,但如果您使用适当的抽象层编写它,有人可能总是决定将其移植到另一个数据库。但是,考虑到你的情况,这可能是完全不合情理的。无论如何,感谢您的链接。 – octern 2012-03-17 17:20:23