在mysql中选择更多范围
考虑到以下场景,我如何在MySQL中选择多个范围:假设我想从我的产品表中返回产品 价格0-300,价格600-1000,价格1200-1600 我正在尝试以下方法在mysql中选择更多范围,mysql,sql,range,Mysql,Sql,Range,考虑到以下场景,我如何在MySQL中选择多个范围:假设我想从我的产品表中返回产品 价格0-300,价格600-1000,价格1200-1600 我正在尝试以下方法 SELECT * FROM products WHERE price > 0 AND price <= 300 AND price >= 600 AND price <= 1000 从价格>0的产品中选择* 价格=600 价格使用“或”条件而不是“和”如果一个数字在0和300之间,它不能也
SELECT * FROM products WHERE price > 0
AND price <= 300
AND price >= 600
AND price <= 1000
从价格>0的产品中选择*
价格=600
价格使用“或”条件而不是“和”如果一个数字在0
和300
之间,它不能也在600
和1000
之间。您是在找还是?也许只是为了让事情变得更简单
SELECT * FROM products WHERE
price BETWEEN 0 AND 300
OR
price BETWEEN 600 AND 1000
OR
price BETWEEN 1200 AND 1600
你肯定需要这样的东西:
SELECT *
FROM products
WHERE
(price > 0 AND price <= 300) OR
(price > 600 AND price <= 1000) OR
(price > 1200 AND price <= 1600)
选择*
来自产品
哪里
(价格>0,价格600,价格1200,价格
考虑到介于0和300之间的价格将包括0
它将被解析为price>=0,price您希望结果分组吗?它必须是一个查询吗?如果是-我认为您不能在一个查询中实现这一点。您告诉它它必须同时在前两个和后两个之间。这是不可能的,您需要对该语句使用或。因此它应该是price-between-price或price-between-price
谢谢您的反馈,我将尝试或者您也可以声明从产品中选择*,其中价格介于0和1000之间-不会对结果产生任何影响。@osterhase当然会。301-599和1001-1199呢?0将包含在该声明中但最初的查询排除了0:price>0
@Koryu,但OP的问题是价格0-300,价格600-1000,价格1200-1600,他在查询中包括600,表示“大于或等于”,因此很难知道1-300是否是OP真正想要的。如果是这样,在查询中更改数字就非常简单了。:)既然你是对的,试着展示一些代码并解释为什么应该使用它。读到这篇文章,有人可能会想把所有的和
都改成或
。
SELECT * FROM products WHERE
(price > 0 AND price <= 300 )
OR
(price > 600 AND price <= 1000)
OR
(price > 1200 AND price <= 1600 )
price BETWEEN 0 AND 300
or
price between ...