gpt4 book ai didi

MySQL 5.6 父/子 - 如果给定 Id,则返回最新(最小的子)记录

转载 作者:行者123 更新时间:2023-11-29 09:48:18 26 4
gpt4 key购买 nike

MySQL 5.6

给定以下架构:

    |id|product_id|parent_id|ordered|sent|BO  |date_updated       |
---------------------------------------------------------------
|1 |12313 |NULL |2 |NULL|NULL|2019-03-01 13:24:00|
---------------------------------------------------------------
|2 |12313 |1 |2 |1 |1 |2019-03-02 10:24:00|
---------------------------------------------------------------
|3 |12313 |2 |2 |2 |0 |2019-03-04 16:40:00|
---------------------------------------------------------------

如果给我一个特定的 ID(即 2),我将如何编写 sql 查询来为我提供关系中的最新记录(即 3)?

此外,如果给我 id 1,我还需要返回最新的(id 3)记录。关系级别未知。它可以有n个 child 。

如果给我的 id 为 3,我需要返回 id 3(因为它是最新的记录)。

最佳答案

对于在 MySQL 5.7 或更早版本上运行的查询,我将使用以下命令:

SELECT t1.*
FROM yourTable t1
INNER JOIN
(
SELECT product_id, MAX(date_updated) AS max_date_updated
FROM yourTable
WHERE product_id = (SELECT product_id FROM yourTable
WHERE id = 1) -- replace with your id value
GROUP BY product_id
) t2
ON t1.product_id = t2.product_id AND
t1.date_updated = t2.max_date_updated;

正如 @PaulSpiegel 所说,我们还可以在这里使用 LIMIT 子查询技巧:

SELECT *
FROM yourTable
WHERE product_id = (SELECT product_id FROM yourTable WHERE id = 1)
ORDER BY date_updated DESC
LIMIT 1;

关于MySQL 5.6 父/子 - 如果给定 Id,则返回最新(最小的子)记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55274827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com