【问题标题】:Minimum and max price between price range mysql query价格范围mysql查询之间的最低和最高价格
【发布时间】:2015-05-26 19:08:04
【问题描述】:

我有这张表“价格”

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,其 max price_per_week 大于 1000

我认为我应该以某种方式使用子查询,但我仍在学习......

【问题讨论】:

    标签: mysql


    【解决方案1】:

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

    “显示不属于价格超出范围的集合的 ID”

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

    【讨论】:

      【解决方案2】:

      您有多个具有相同 id 的行,所以这可能是问题所在。您的查询选择 price_per_week 介于 200 和 1000 之间的 每一 行。

      【讨论】:

      • 是的,但是每个 id 可以有多个行,其中定义了一段时间的价格。这是一个度假租赁网站,其中房屋在一段时间内有价格
      • 如果您想要特殊时期的结果,可以添加类似AND date_start <= someStartDate AND date_end >= someEndDate 的内容。
      • 不,我不想那样做。我只想要一个独立于日期的价格范围之间的所有 id
      • 对不起,我想我上次没听懂你的问题。所以你想要 every 周期中 price_per_week 介于某个范围之间的所有条目的 ID?所以这可能是SELECT id FROM prices WHERE price_per_week BETWEEN 200 AND 1000 AND id NOT IN (SELECT id FROM prices WHERE price_per_week NOT BETWEEN 200 AND 1000)(尚未测试...)
      猜你喜欢
      • 2015-08-13
      • 2016-01-16
      • 1970-01-01
      • 2023-03-14
      • 2013-02-22
      • 1970-01-01
      • 2019-05-29
      • 2019-06-13
      • 1970-01-01
      相关资源
      最近更新 更多