Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中选择更多范围_Mysql_Sql_Range - Fatal编程技术网

在mysql中选择更多范围

在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之间,它不能也

考虑到以下场景,我如何在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
之间,它不能
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 ...