【发布时间】:2011-06-02 14:27:31
【问题描述】:
我有一张桌子
'products' => ('product_id', 'name', 'description')
还有一张桌子
'product_price' => ('product_price_id', 'product_id', 'price', 'date_updated')
我想执行类似的查询
SELECT `p`.*, `pp`.`price`
FROM `products` `p`
LEFT JOIN `product_price` `pp` ON `pp`.`product_id` = `p`.`product_id`
GROUP BY `p`.`product_id`
ORDER BY `pp`.`date_updated` DESC
您可能会猜到价格经常变化,我需要拿出最新的。问题是我不知道如何订购 LEFT JOINed 表。我尝试使用一些 GROUP BY 函数,例如 MAX(),但这只会拉出列而不是行。
谢谢。
【问题讨论】:
-
你能解释一下你希望发生什么吗?您想按组的最大值订购吗?您只想加入最新更新吗?也许一些示例数据和该数据的预期输出将有助于澄清您的问题。
-
我有一种产品有 5 种不同的价格,它们的 'date_updated' 日期时间不同。我需要加入并提取最新价格。
-
这是对更大查询的简化。我不能使用 INNER JOIN,因为在实际查询中我加入了许多表并使用 IF 来选择 NOT NULL 列。
标签: mysql