Mysql

僅當另一個表中的 COUNT 不為零時才更新

  • December 14, 2015

我通過計算另一個表中的 FK 來更新一個表

UPDATE table1 
SET number = number +
(
SELECT COUNT(*) FROM table2 
WHERE  table1.id=table2.id
)

table1是一張大桌子,我想做UPDATE唯一的如果COUNT找到了一些東西。換句話說,我不想製作UPDATEfor number=0

id通過from導出一個計數表,table2將結果連接到table1並在 UPDATE 語句中使用該連接:

UPDATE
 table1 AS t1
 INNER JOIN
   (
     SELECT
       id,
       COUNT(*) AS cnt
     FROM
       table2
     GROUP BY
       id
   ) AS t2 ON t1.id = t2.id
SET
 t1.number = t1.number + t2.cnt
;

上面的語句將只影響table1table2.

添加where exists到它:

UPDATE table1 
SET number = number +
(
SELECT COUNT(*) FROM table2 
WHERE  table1.id=table2.id
)
WHERE EXISTS (
SELECT * FROM table2
WHERE  table1.id=table2.id
)

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