我想加入两个MySQL表(产品和价格历史记录):
Product表:

Id = int
Name = varchar
Manufacturer = varchar
UPC = varchar
Date_added = datetime
Price_h表:
Id = int
Product_id = int
Price = int
Date = datetime

我可以执行一个简单的LEFT JOIN:
SELECT Product.UPC, Product.Name, Price_h.Price, Price_h.Date
FROM Product
LEFT JOIN Price_h
ON Product.Id = Price_h.Product_id;

但是正如预期的那样,如果我在价格历史记录表中有一个产品的多个条目,则每个历史价格都会得到一个结果。

如何建立一个仅返回每个产品的一个实例且仅连接了价格历史表中最新条目的结构?

最佳答案

采用:

   SELECT p.upc,
          p.name,
          ph.price,
          ph.date
     FROM PRODUCT p
LEFT JOIN PRICE_H ph ON ph.product_id = p.id
     JOIN (SELECT a.product_id,
                  MAX(a.date) AS max_date
             FROM PRICE_H a
         GROUP BY a.product_id) x ON x.product_id = ph.product_id
                                 AND x.max_date = ph.date

关于mysql - 如何与MySQL建立 “distinct”连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3088686/

10-13 08:03