我有这张桌子“价格”
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
我想我应该以某种方式使用子查询,但我还在学习......
答案 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之间。