gpt4 book ai didi

mysql - SQL文件夹实体去重流程

转载 作者:行者123 更新时间:2023-11-30 00:25:37 24 4
gpt4 key购买 nike

我有一个数据库,其中包含用于创建文件夹/实体类型关系的表。重要的表格和列如下。

表:文件夹

列:id(唯一)、名称、创建(日期)

表:entity_map

列:folder_id、entity_id(映射到唯一的entity_id。实体可以位于多个文件夹中)。

问题是对folder.name列没有唯一的检查,所以我们有一堆具有相似名称的文件夹(我们不想要)。我想获取所有具有相似名称的文件夹下的实体 (lower(trim(name))) 并将它们放在已存在的文件夹之一下(具有最早创建日期的文件夹即可)。

最佳答案

您可以使用以下内容:

UPDATE entity_map, folders join 
(
SELECT MIN(id) id ,(LOWER(TRIM(name))) name
FROM folders
GROUP BY (LOWER(TRIM(name)))
) AS f1 ON ((f1.id <> folders.id) AND (f1.name=folders.name))
SET entity_map.folder_id=f1.id
WHERE folder_id=folders.id;

这假定folders.id 为AUTO_INCRMENT 并且不考虑文件夹创建日期。如果您在单个事务中与上述命令一起运行以下命令,它还会删除空文件夹:

DELETE FROM folders 
USING folders LEFT JOIN entity_map ON (folders.id=entity_map.folder_id)
WHERE entity_map.folder_id IS NULL;

关于mysql - SQL文件夹实体去重流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22915957/

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