我有一张桌子
'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)
这将会影响性能,但因为它对于每一行都是相同的子查询,所以它不应该太糟糕.
| 归档时间: |
|
| 查看次数: |
28268 次 |
| 最近记录: |