gpt4 book ai didi

MySQL:多个商店中每种产品的最新最低价格

转载 作者:行者123 更新时间:2023-11-29 21:36:25 31 4
gpt4 key购买 nike

我正在尝试获取按 updated 字段降序排列的最新更新产品列表,其中价格也最低,但每个产品只有一条记录,问题是每个商店的最新记录都是有效的,因此我需要根据产品的所有商店的最新价格提取最低价格,因此它只会返回最近的最低价格。

价格

prod_id     | price     | store | updated
--------------------------------------------------------
product 1 | 1.99 | 1 | 2016-01-20 00:00:00
product 2 | 1.49 | 1 | 2016-01-20 00:10:00
product 2 | 1.19 | 2 | 2016-01-20 00:00:00
product 3 | 12.49 | 1 | 2016-01-20 00:00:00
product 3 | 12.49 | 2 | 2016-01-20 00:00:00
product 4 | 9.89 | 1 | 2016-01-20 00:00:00
product 5 | 10.00 | 1 | 2016-01-20 00:10:00
product 5 | 9.99 | 2 | 2016-01-20 00:00:00
product 5 | 10.49 | 3 | 2016-01-20 00:00:00

预期输出

product 1   | 1.99      | 1     | 2016-01-20 00:00:00
product 2 | 1.49 | 1 | 2016-01-20 00:10:00
product 3 | 12.49 | 1 | 2016-01-20 00:00:00
product 4 | 9.89 | 1 | 2016-01-20 00:00:00
product 5 | 9.99 | 2 | 2016-01-20 00:00:00

流程是,如果 prod_id 只有一条记录,则使用该记录,如果 prod_id 有两个或多个条目,则按 排序按降序更新了 列,以便显示该 prod_id 商店中最新记录的最低价格。

SQL

SELECT `price`
, `store`
, `updated`
FROM `price`
ORDER BY `updated` DESC
, `store` ASC
LIMIT 10;

主要问题是我不知道如何让它只提取商店中该产品的最新记录中价格最低的一条产品记录,我是否应该使用一个函数来执行此操作上面概述的逻辑,或者有没有办法将上述逻辑应用到正常的 SELECT 查询?

最佳答案

永远记住这种 SQL 只适用于子查询:

SELECT distinct price.*
FROM price, (
SELECT prod_id, max(updated) last_updated
FROM price
group by 1
) as price_last
WHERE price.prod_id = price_last.prod_id
AND price.updated = price_last.last_updated

如果你确定updated,prod_id是唯一的(这意味着任何产品每秒只更新一次),你可以删除“distinct”

关于MySQL:多个商店中每种产品的最新最低价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34889619/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com