Sql Access 2003:计数(*)产生语法错误
我正在使用ms access,由于某种原因,这里的代码产生了一个语法错误,我不理解Sql Access 2003:计数(*)产生语法错误,sql,ms-access,Sql,Ms Access,我正在使用ms access,由于某种原因,这里的代码产生了一个语法错误,我不理解 UPDATE Korrekturentlastung SET Schueler = SELECT COUNT(*) FROM Korrekturentlastung WHERE Korrekturentlastung_Kurs.Kuerzel = Korrekturentlastung.Kuerzel AND Korrekturentlastung_Kurs.Klasse =
UPDATE Korrekturentlastung
SET Schueler = SELECT COUNT(*)
FROM Korrekturentlastung
WHERE
Korrekturentlastung_Kurs.Kuerzel = Korrekturentlastung.Kuerzel
AND Korrekturentlastung_Kurs.Klasse = Korrekturentlastung.Klasse
AND Korrekturentlastung_Kurs.Fach = Korrekturentlastung.Fach
AND Korrekturentlastung_Kurs.Kursart = Korrekturentlastung.Kursart
错误是:
Syntax error. in query expression 'SELECT COUNT(*)
FROM Korrekturentlastung'
子查询需要自己的括号:
UPDATE Korrekturentlastung
SET Schueler = (SELECT COUNT(*)
FROM Korrekturentlastung
WHERE Korrekturentlastung_Kurs.Kuerzel = Korrekturentlastung.Kuerzel
AND Korrekturentlastung_Kurs.Klasse = Korrekturentlastung.Klasse
AND Korrekturentlastung_Kurs.Fach = Korrekturentlastung.Fach
AND Korrekturentlastung_Kurs.Kursart = Korrekturentlastung.Kursart
);
虽然@Gordon Linoff已正确识别了查询中的语法错误,但如果要在MS Access中运行查询,您可能会收到熟悉的响应: 操作必须使用可更新的查询 这是由于MS Access使用的JET数据库引擎受到限制,因此
更新
查询的任何部分都不能使用聚合。在您的情况下,这是由于使用了count(*)
一种可能的替代方法是使用域聚合函数,该函数的计算与主查询的计算是分开的,因此保留了查询的“可更新性”
update korrekturentlastung
set schueler =
dcount
(
"*",
"Korrekturentlastung",
"Kuerzel = " & Korrekturentlastung.Kuerzel & " and "
"Klasse = " & Korrekturentlastung.Klasse & " and "
"Fach = " & Korrekturentlastung.Fach & " and "
"Kursart = " & Korrekturentlastung.Kursart
)
请注意,如果字段是文本字段,则还需要用单引号或双引号将上述值括起来,例如:
update korrekturentlastung
set schueler =
dcount
(
"*",
"Korrekturentlastung",
"Kuerzel = '" & Korrekturentlastung.Kuerzel & "' and "
"Klasse = '" & Korrekturentlastung.Klasse & "' and "
"Fach = '" & Korrekturentlastung.Fach & "' and "
"Kursart = '" & Korrekturentlastung.Kursart & "'"
)