获取每个post\u id的最后结果

hmtdttj4  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(391)

我用的是 mysqlnd 5.0.12-dev 数据库作为我的后端,我想回到,在最后一行 wp_productprofitability 对于每个post\u id。
我有以下设置: wp_post :

  1. +----+--------------+
  2. | ID | title |
  3. +----+--------------+
  4. | 10 | My Product 1 |
  5. +----+--------------+
  6. | 11 | My Product 2 |
  7. +----+--------------+
  8. | 6 | My Product 3 |
  9. +----+--------------+
  10. ``` `wp_productprofitability` ```
  11. +---------+-------------------+---------------------+
  12. | post_id | daily_grossProfit | created_at |
  13. +---------+-------------------+---------------------+
  14. | 10 | 3.5 | 2018-06-18 07:36:00 |
  15. +---------+-------------------+---------------------+
  16. | 11 | 4 | 2018-06-17 07:35:00 |
  17. +---------+-------------------+---------------------+
  18. | 10 | 5 | 2018-06-16 07:34:00 |
  19. +---------+-------------------+---------------------+
  20. | 11 | 7 | 2018-06-17 07:36:00 |
  21. +---------+-------------------+---------------------+
  22. | 10 | 5 | 2018-06-15 07:36:00 |
  23. +---------+-------------------+---------------------+
  24. | 6 | 3.6 | 2018-06-12 07:34:00 |
  25. +---------+-------------------+---------------------+
  26. | 10 | 2 | 2018-06-14 07:32:00 |
  27. +---------+-------------------+---------------------+
  28. | 6 | 6 | 2018-06-13 07:31:00 |
  29. +---------+-------------------+---------------------+

预期结果:

  1. +----+--------------+---------+-------------------+---------------------+
  2. | ID | title | post_id | daily_grossProfit | created_at |
  3. +----+--------------+---------+-------------------+---------------------+
  4. | 10 | My Product 1 | 10 | 3.6 | 2018-06-18 07:36:00 |
  5. +----+--------------+---------+-------------------+---------------------+
  6. | 11 | My Product 2 | 11 | 4 | 2018-06-17 07:36:00 |
  7. +----+--------------+---------+-------------------+---------------------+
  8. | 6 | My Product 3 | 6 | 5 | 2018-06-16 07:34:00 |
  9. +----+--------------+---------+-------------------+---------------------+

对于以下查询,我只返回以下结果:

  1. SELECT
  2. *
  3. FROM
  4. wp_posts p
  5. INNER JOIN wp_productprofitability m ON
  6. m.post_id = p.ID
  7. WHERE
  8. m.created_at =(
  9. SELECT
  10. MAX(u.created_at)
  11. FROM
  12. wp_productprofitability u
  13. )
  14. ORDER BY
  15. m.daily_grossProfit
  16. DESC

当前结果:

  1. +----+--------------+---------+-------------------+---------------------+
  2. | ID | title | post_id | daily_grossProfit | created_at |
  3. +----+--------------+---------+-------------------+---------------------+
  4. | 10 | My Product 1 | 10 | 3.6 | 2018-06-18 07:36:00 |
  5. +----+--------------+---------+-------------------+---------------------+
  6. | 11 | My Product 2 | 11 | 4 | 2018-06-17 07:36:00 |
  7. +----+--------------+---------+-------------------+---------------------+

有什么建议可以让每个帖子都知道最后发生的事情吗?
感谢您的回复!

dpiehjr4

dpiehjr41#

你很接近。你只需要一个关联子句:

  1. SELECT *
  2. FROM wp_posts p INNER JOIN
  3. wp_productprofitability pp
  4. ON pp.post_id = p.ID
  5. WHERE m.created_at = (SELECT MAX(pp2.created_at)
  6. FROM wp_productprofitability pp2
  7. WHERE pp2.post_id = pp.post_id
  8. )
  9. ORDER BY pp.daily_grossProfit DESC
ftf50wuq

ftf50wuq2#

我会将您的查询短语化为一个子查询,该子查询查找表中最近的记录 wp_productprofitability 对于每个 post_id :

  1. SELECT
  2. t1.ID,
  3. t1.title,
  4. t2.post_id,
  5. t2.daily_grossProfit,
  6. t2.created_at
  7. FROM wp_post t1
  8. INNER JOIN wp_productprofitability t2
  9. ON t1.ID = t2.post_id
  10. INNER JOIN
  11. (
  12. SELECT post_id, MAX(created_at) AS max_created_at
  13. FROM wp_productprofitability
  14. GROUP BY post_id
  15. ) t3
  16. ON t2.post_id = t3.post_id AND t2.created_at = t3.max_created_at;

请参阅gordon的答案,以更正您的确切问题。基本上,您需要向子查询中添加逻辑,以限制子查询中的每个记录 wp_productprofitability 到每个的最新版本 post_id . 但我不会在这里使用相关子查询,连接可能会比它表现更好。

展开查看全部

相关问题