遍历mysql记录以查找最新的修改记录

问题描述 投票:1回答:1

我在MySQL中有2个表格的文件夹结构:

文件夹表格:

|folder_id   |  parent_id |   modified_by | updated_at        |
+------------+------------+---------------+-------------------+
|     1      |     NULL   |    Andy       |2020-12-11 11:13:25|
|     2      |      1     |    Andy       |2020-01-26 14:22:03|
|     3      |      1     |    Mary       |2020-01-25 03:55:03|
|     5      |      2     |    Ruby       |2020-01-15 22:13:33| 
|     6      |      2     |    Mary       |2020-01-18 00:52:44|

documents表格:

|document_id |  folder_id |   modified_by | updated_at        |
+------------+------------+---------------+-------------------+
|     1      |      NULL  |    Andy       |2019-12-11 13:12:25|
|     2      |      2     |    Janice     |2020-01-25 01:55:03|
|     3      |      2     |    Katy       |2020-01-11 03:55:03|
|     5      |      3     |    Mary       |2020-01-12 01:55:03| 
|     6      |      6     |    Mary       |2020-01-26 13:14:12|

所以基本上这两个表是用于我的文件管理器系统的,我需要基于folder_parent_id来检索文件夹和文档,此列用于标记某个文件夹是否在另一个文件夹内,以便另一个文件夹成为父文件夹。如果parent_idNULL,则表示该文件夹位于目录的根目录中。至于文档,它可以在另一个文件夹中或在根目录中(folder_id为空)。我正在使用此查询合并文件夹和文档:

SELECT folder_id, 
    NULL AS document_id, modified_by, updated_at
FROM folders 
WHERE parent_id = given_parameter

UNION

SELECT NULL as folder_id, 
    document_id, modified_by, updated_at
FROM documents 
WHERE folder_id = given_parameter 

我要实现的功能是获取文件夹中每个子文件夹或文件夹/子文件夹中的文件的最新update_at值,因此与其显示文件夹的Updated_at值,不如寻找最新的[ C0],以及谁对其进行了修改

mysql sql
1个回答
0
投票
update_at
SELECT document_id, f.folder_id, 

(CASE WHEN f.updated_at > d.updated_at THEN f.modified_by ELSE d.modified_by END) AS modified_by, 
(CASE WHEN f.updated_at > d.updated_at THEN f.updated_at ELSE d.updated_at END) AS updated_at,
(CASE WHEN f.updated_at > d.updated_at THEN 'folder' ELSE 'document' END) AS because 

FROM `documents` AS d LEFT JOIN folders AS f ON f.folder_id=d.folder_id ORDER BY d.updated_at DESC, f.updated_at DESC

这将返回原因...

© www.soinside.com 2019 - 2024. All rights reserved.