【发布时间】:2016-04-25 16:24:25
【问题描述】:
我正在尝试获取按updated 降序排列的最新更新产品列表,其中价格也最低,但每个产品只有一条记录,问题是每个产品的最新记录store 是有效的,所以我需要根据产品的所有商店的最新价格提取最低价格,所以它只会返回最近的最低价格。
价格
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 有两个或更多条目,则按updated 列以降序排列,因此整个价格最低将显示该 prod_id 在商店中的最新记录。
SQL
SELECT `price`
, `store`
, `updated`
FROM `price`
ORDER BY `updated` DESC
, `store` ASC
LIMIT 10;
主要问题是我不知道如何让它只提取商店中该产品的最新记录中价格最低的产品的一条记录,我是否应该使用函数来做上述逻辑还是有办法将上述逻辑应用于普通的SELECT 查询?
【问题讨论】:
-
这是 SO 上 MySQL 标签下最常见的问题。有时,它也得到了正确的回答。我可以在那里看到一些答案--->。我怀疑其中一些是正确的。
-
@Strawberry,对此感到抱歉,我已经更新了问题,它不像我第一次发布的那么直接,完全是我的错,没有完全解释。
-
我上面的回复仍然有效
标签: mysql