mysql - SQL查询: Current lowest price of products

标签 mysql sql

我正在为项目的 SQL 查询而苦苦挣扎。

给出了下表:

tblProduct => (proProductID, proProductName)
tblSeller => (selSellerID, selSellerName)
linkProductSeller => (linkID, linkProductID, linkSellerID, linkPrice, linkShippingPrice, linkDatetime)

每次卖家的产品价格/运费发生变化时,都会在 linkProductSeller 中添加新行。

我需要了解产品当前的最低价格/运费组合和卖家。

为了获取产品的所有当前价格,我使用此查询

SELECT linkProductID, linkSellerID, linkPrice+linkShippingPrice as price, linkDatetime
FROM linkProductSeller AS a
WHERE linkDatetime = (
    SELECT MAX(linkDatetime)
    FROM linkProductSeller AS b
    WHERE a.linkProductID = b.linkProductID
AND a.linkSellerID = b.linkSellerID)
ORDER BY linkProductID ASC, price ASC, linkDatetime DESC

感谢您的支持。

最佳答案

您需要的所有数据都在 linkProductSeller 中,因此这应该可行

select l.linkProductId, min(linkPrice + linkShippingPrice) as minPrice
  from linkProductSeller l,
       (select linkProductID, linkSellerId, max(linkDateTime) as linkDateTime
          from linkProductSeller 
         group by linkProductID, linkSellerId) m
 where l.linkProductID = m.linkProductID
   and l.linkSellerID = m.linkSellerID
   and l.linkDateTime = m.linkDateTime
 group by linkProductId

关于mysql - SQL查询: Current lowest price of products,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18181037/

相关文章:

sql - 在Oracle中将SQL行转换为逗号分隔的值

php - SQL 和 PHP 中的分页不起作用

PHP MySQL 数据库 - 将所有行放入多维数组

PHP 仅向 SQL 数据库添加一条新记录

sql - 如何调试 T-SQL 触发器?

c# - 如果 First() 不存在,如何在不引发异常的情况下获取它? [当 FirstOrDefault 不起作用时]

php - 使用 PHP 将值插入服务器

MySQL/InnoDB 结果集限制为 1000 条记录?

mysql - sqlyog 不更新记录

java - 将Java连接到MySQL数据库