gpt4 book ai didi

MySQL:通过迭代和连接另一个表来更新表中的行

转载 作者:行者123 更新时间:2023-11-29 01:46:29 34 4
gpt4 key购买 nike

我有一张表格

CREATE TABLE `papers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`my_count` int(11) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `title_fulltext` (`title`),
) ENGINE=MyISAM AUTO_INCREMENT=1617432 DEFAULT CHARSET=utf8 COLLATE=utf8_bin

和另一个表link_table

CREATE TABLE `auth2paper2loc` (
`auth_id` int(11) NOT NULL,
`paper_id` int(11) NOT NULL,
`loc_id` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

上表中的 id papers.id 与第二个表中的 link_table.paper_id 相同。我想遍历上表中的每一行并计算它的 id 在第二个表中出现的次数,并将“计数”存储到上表中的“my_count”列中。

示例:如果 tid = 1 = paper_id 的论文在表 link_table 中出现了 5 次,则 my_count = 5。

我可以通过 Python 脚本来做到这一点,但它会导致查询太多,而且我有数百万个条目,所以它真的很慢。而且我想不出正确的语法来在 MySQL 中实现这一点。

这就是我在 Python 的 for 循环中迭代的内容(太慢了):

SELECT count(link_table.auth_id) FROM link_table
WHERE link_table.paper_id = %s

UPDATE papers SET auth_count = %s WHERE id = %s

有人可以告诉我如何创建这个吗?一定有办法将它嵌套并直接放在 MySQL 中,这样速度更快,不是吗?

最佳答案

这对您来说效果如何?

update papers a
set my_count = (select count(*)
from auth2paper2loc b
where b.paper_id = a.id);

关于MySQL:通过迭代和连接另一个表来更新表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5532050/

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