将记录数插入不同的 table

Insert a records count into a different table

我需要将一个 table 中所有记录的计数写入另一个。我正在使用 INSET INTO 语句,它看起来非常简单。访问 returns 我犯了语法错误。这是我的查询:

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

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

使用INSERT INTO...SELECT:

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

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

insert . . . values 的语法是:

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

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

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

这是我们使用 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