将记录计数插入到不同的表中

时间:2016-11-08 00:18:13

标签: sql ms-access insert-into

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

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

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

3 个答案:

答案 0 :(得分:6)

使用INSERT INTO...SELECT

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

答案 1 :(得分:6)

我会按照Tim推荐的那样insert . . . select来做。但是,我想解释一下你的语法有什么问题。

insert . . . values的语法是:

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

注意括号。此外,子查询始终需要自己的括号。因此,为了使您的版本有效,您需要一组额外的括号:

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

答案 2 :(得分:0)

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