
假设我想列出包含最小和最大容量(即大于和等于/小于和等于)的场所名称和价格,使用下面的SQL语句就足够了吗?有没有更好的方式来呈现它?
SELECT * FROM rooms WHERE capacity between '$minimum' AND '$maximum'我只是想知道,因为它让我有点困惑。
如果最小值为0,最大值为1000 -SQL选择满足语句条件的行背后的逻辑是什么?
发布于 2012-03-18 00:36:37
是的,这是正确的。有关BETWEEN如何工作的解释,请参阅§11.3.2 "Comparison Functions and Operators" in the ;正如您所看到的,它确实提供了一个包含性的最小值和最大值,就像您需要的那样。
也就是说,尽管您的查询是完全正确的,但将'$minimum' AND '$maximum'更改为$minimum AND $maximum (没有引号)可能更好,这样在视觉上就可以清楚地看到这些是数字,而不是字符串。
发布于 2012-03-18 00:37:08
对我来说,这看起来很好,但我不知道你在困惑什么。"between“条件选择从$minimum到$maximum的所有内容,就像您说的那样。
根据this page的说法,一些(未命名的)数据库将BETWEEN实现为独占而不是包含的(也就是说,它不会选择等于$minimum或$maximum的值)。因此,用两个显式的不等式代替你的标准可能会更安全:
where capacity >= $minimum and capacity <= $maximumhttps://stackoverflow.com/questions/9751670
复制相似问题