MySQL LEFT JOIN,GROUP BY和ORDER BY不按要求工作

Sim*_*mon 11 mysql

我有一张桌子

'products' => ('product_id', 'name', 'description') 
Run Code Online (Sandbox Code Playgroud)

和一张桌子

'product_price' => ('product_price_id', 'product_id', 'price', 'date_updated')
Run Code Online (Sandbox Code Playgroud)

我想执行类似的查询

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
Run Code Online (Sandbox Code Playgroud)

你可以猜测价格经常变化,我需要拿出最新的价格.麻烦的是我无法弄清楚如何订购LEFT JOINed表.我尝试使用MAX()之类的一些GROUP BY函数,但这样只会拉出列而不是行.

谢谢.

Sim*_*mon 16

似乎无法在GROUP BY汇总中使用ORDER BY.我的基本逻辑是有缺陷的.我将需要运行以下子查询.

SELECT `p`.*, `pp`.`price` FROM `products` `p` 
LEFT JOIN (
    SELECT `price` FROM `product_price` ORDER BY `date_updated` DESC
) `pp` 
ON `p`.`product_id` = `pp`.`product_id`
GROUP BY `p`.`product_id`;
Run Code Online (Sandbox Code Playgroud)

这将会影响性能,但因为它对于每一行都是相同的子查询,所以它不应该太糟糕.