Mysql

如何從另一個表中按 FK 的 COUNT 更新列?

  • December 15, 2013

如何將此查詢擴展到整個表,以更新所有ids?

UPDATE table1 SET number=(
SELECT COUNT(*) FROM table2 where id=1
) WHERE id=1

id是在表PRIMARY KEY1 和FK表 2 中。

如何通過計算table2中具有相同idWHERE的行數來刪除更新table1每一行的子句?FK

您可以對聚合計數的子查詢執行UPDATE JOINoftable1``id``table2

UPDATE
   table1 A INNER JOIN
   (SELECT id,COUNT(1) idcount
   FROM table2 GROUP BY id) B
   USING (id)
SET A.number = B.idcount;

這個查詢不會得到每一個id. 為什麼?如果idintable1中缺少 in table2,則不會在numbers列中寫入零。

要覆蓋 中id缺少的值table2,請執行以下命令:

UPDATE
   table1 A LEFT JOIN
   (SELECT id,COUNT(1) idcount
   FROM table2 GROUP BY id) B
   USING (id)
SET A.number = IFNULL(B.idcount,0);

試一試 !!!

引用自:https://dba.stackexchange.com/questions/55041