【问题标题】:mysql update with select count() from inner join使用内部连接中的 select count() 更新 mysql
【发布时间】:2016-07-13 14:00:59
【问题描述】:

我有以下 select 语句,它计算一个值在连接表中出现的次数:

SELECT table1.idx, count(table1.idx) FROM 
(table2 INNER JOIN table1 ON table1.id=table2.id AND table2.value = 'target') 
GROUP BY table1.idx;

现在我想用这些结果更新第三个表,设置 table3.idx = table1.idx 的计数。我试过了

UPDATE table3 SET count_col=joined_table.c FROM 
(SELECT table1.idx, count(table1.idx) FROM 
   (table2 INNER JOIN table1 ON table1.id=table2.id AND table2.value = 'target') 
   GROUP BY table1.idx
) joined_table WHERE table3.idx = table1.idx;

按照How do I UPDATE from a SELECT in SQL Server? 的建议,也尝试过

UPDATE table3 SET count_col=(
    SELECT COUNT(table1.idx) 
    FROM (table1 INNER JOIN table2 ON table1.id=table2.id AND table2.value = 'target') 
    GROUP BY table1.idx 
WHERE table3.idx = table1.idx);

按照MySQL - UPDATE query based on SELECT Query 中的建议,但它们都不起作用。正确的语法是什么?

【问题讨论】:

    标签: mysql sql-update inner-join


    【解决方案1】:
    UPDATE table3 
    JOIN 
    (
      SELECT table1.idx, count(table1.idx) as cnt
      FROM table2 
      INNER JOIN table1 ON table1.id = table2.id 
                       AND table2.value = 'target'
      GROUP BY table1.idx
    ) joined_table ON table3.idx = joined_table.idx
    SET count_col = joined_table.cnt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-10
      • 2015-10-30
      • 2012-12-13
      • 2019-03-27
      • 1970-01-01
      • 2022-01-24
      • 2014-08-19
      • 2019-06-25
      相关资源
      最近更新 更多