价格范围mysql查询之间的最小和最大价格

时间:2011-11-17 20:59:08

标签: mysql

我有这张桌子“价格”

id | price_per_week | date_start | date_end
1  | 500            | timestamp  | timestamp
1  | 5000           | timestamp  | timestamp
2  | 100            | timestamp  | timestamp
3  | 300            | timestamp  | timestamp
3  | 200            | timestamp  | timestamp
3  | 6000           | timestamp  | timestamp
3  | 50             | timestamp  | timestamp
4  | 600            | timestamp  | timestamp
5  | 800            | timestamp  | timestamp
5  | 200            | timestamp  | timestamp

我希望获得所有ID,其最小值和最大值介于价格范围之间。例如,所有具有最小price_per_week> = 200且最大price_per_week 1000的ID。

当我运行此查询时

SELECT id FROM prices WHERE price_per_week BETWEEN 200 AND 1000

它还返回id 1,3,其最大price_per_week大于1000

我想我应该以某种方式使用子查询,但我还在学习......

2 个答案:

答案 0 :(得分:2)

如果您只想要每周价格始终在范围内的ID,请尝试这样思考:

“向我显示不属于价格超出范围的套装的ID”

SELECT id 
FROM prices 
WHERE id NOT IN (
  SELECT id
  FROM prices
  WHERE price_per_week not between 200 and 1000
);

答案 1 :(得分:1)

你有多个具有相同ID的行,所以这可能是问题所在。您的查询选择每个行,price_per_week在200到1000之间。