我需要将一个表中的所有记录的计数写入另一个表中。我正在使用INSET INTO语句,看起来非常简单。访问返回我正在犯一个语法错误。这是我的疑问:
INSERT INTO tblA (Field1)
VALUES (SELECT COUNT(tblB.ID) FROM tblB);
这是什么问题?访问文档说您可以提供查询作为VALUES的参数。它是Access不喜欢的聚合吗?
答案 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)
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