【问题标题】:Insert a records count into a different table将记录计数插入到不同的表中
【发布时间】:2016-11-08 00:18:13
【问题描述】:

我需要将一个表中所有记录的计数写入另一个表中。我使用的是 INSET INTO 语句,看起来很简单。 Access 返回我犯了语法错误。这是我的查询:

   INSERT INTO tblA (Field1)
   VALUES (SELECT COUNT(tblB.ID) FROM tblB);

这里有什么问题?访问文档说您可以将查询作为 VALUES 的参数。是不是Access不喜欢的聚合?

【问题讨论】:

    标签: sql ms-access insert-into


    【解决方案1】:

    我会按照 Tim 的建议使用 insert . . . select。但是,我想解释一下你的语法有什么问题。

    insert . . . values 的语法是:

    insert into tblA(field1)
        values ( . . . );
    

    注意括号。此外,子查询总是需要有自己的括号。因此,要使您的版本正常工作,您需要一组额外的括号:

    INSERT INTO tblA (Field1)
        VALUES ( (SELECT COUNT(tblB.ID) FROM tblB) );
    

    【讨论】:

    • 尝试简单地添加括号时仍然出现错误。这可能是访问限制。感谢您指出错误。
    【解决方案2】:

    使用INSERT INTO...SELECT:

    INSERT INTO tblA (Field1)
    SELECT COUNT(tblB.ID) FROM tblB
    

    【讨论】:

      【解决方案3】:

      这是我们可以使用 COALESCE 的简单方法,我希望它有用

      SELECT
          table1.id,
          COALESCE(table2_count, 0) AS table2_count,
          COALESCE(table3_count, 0) AS table3_count
      FROM users
      LEFT JOIN (
          SELECT id, COUNT(*) AS table2_count
          FROM table2
          GROUP BY id
      ) table2_counts ON table2_counts.id = table1.id
      LEFT JOIN (
          SELECT id, COUNT(*) AS table3_count
          FROM table3
          GROUP BY id
      ) table3_counts ON table3_counts.id = table1.id
      

      【讨论】:

      • COALESCE 在 Access SQL 中不受支持。
      猜你喜欢
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      相关资源
      最近更新 更多