MySQL:使用另一个表中的 COUNT 更新表?

Posted

技术标签:

【中文标题】MySQL:使用另一个表中的 COUNT 更新表?【英文标题】:MySQL: UPDATE table with COUNT from another table? 【发布时间】:2013-04-17 12:14:13 【问题描述】:

我认为这很简单,但我无法理解它......

我有一张表tbl1,它有列id,otherstuff,num

我有另一个表 tbl2,它有列 id,info

我想要的是使tbl1num 列等于tbl2 中具有相同id 的行数。有点像这样:

UPDATE tbl1 SET num =
(SELECT COUNT(*) FROM tbl2 WHERE id=tbl1.id)

有什么想法吗?

【问题讨论】:

你试过了吗?看起来很像this 答案。 多么奇怪。我不认为我写的是正确的 SQL。 【参考方案1】:

如果您的 num 列是有效的数字类型,则您的查询应该按原样工作:

UPDATE tbl1 SET num = (SELECT COUNT(*) FROM tbl2 WHERE id=tbl1.id)

【讨论】:

【参考方案2】:
UPDATE tbl1, (select id, count(*) as idCount from tbl2 group by id) as t2
SET    tbl1.num = t2.idCount
WHERE  tbl1.id = t2.id;

【讨论】:

这是一个完美的解决方案,在大桌子上速度极快。谢谢。 当 tbl1 行对应的列数为 0 时,会发生什么?

以上是关于MySQL:使用另一个表中的 COUNT 更新表?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用MySQL一个表中的字段更新另一个表中字段

mysql更新一个表不在另一个表中的数据

MySQL - 更新/设置一个表中的列等于另一个表中的 MAX 值

Oracle 删除表中的重复行并使用另一个表中的值更新行

使用另一个表中的条件进行更新[MySQL] [重复]

MYSQL:我想用另一个表中的值更新表中的所有行,其中第一个表中的值等于第二个表