gpt4 book ai didi

php - 删除中间表 mySQL

转载 作者:行者123 更新时间:2023-11-29 03:26:43 25 4
gpt4 key购买 nike

我的数据结构如下:

Parent   |    Child
散 | ⺙
⺙ | 𠂉
⺙ | 乂
散 | 38239
38239 | 龷
38239 | 月

如您所见,有时会有中间映射(即散 > 38239 > 龷/月)。

我正在尝试编写一个递归脚本,将上述数据更改为:

Parent   |    Child
散 | ⺙
⺙ | 𠂉
⺙ | 乂
散 | 龷
散 | 月

它基本上只是删除了中间映射。你在这里看不到的是,有时会有多级中间映射(即数字映射到其他数字),我们不知道会有多少级映射,所以它需要递归。

我最近的尝试使用了 php 循环和 mysql 查询,但它占用了太多资源并超时/使用了太多内存而无法使用。

是否有解决此问题的纯 MySQL 解决方案?

最佳答案

分两步完成

先设置 parent ,再删除 child

CREATE TABLE `parchild` (
`parent` varchar(32) DEFAULT NULL,
`child` varchar(32) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `parchild` (`parent`, `child`)
VALUES
('散', '⺙'),
('⺙', ''),
('⺙', '乂'),
('散', '38239'),
('38239', '龷'),
('38239', '月');

UPDATE parchild p
LEFT JOIN parchild p1 ON p.parent = p1.child
SET p.parent = p1.parent
WHERE CONVERT(p.parent, INTEGER) > 0;

DELETE FROM parchild
WHERE CONVERT(child, INTEGER) > 0;

请告诉我它是否适合你

关于php - 删除中间表 mySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34975291/

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