当我连续进行一次工作时
update test set counte =
(select cOUNT(*)as counte from en_cours ,
test where DATEDIFF(DAY, en_cours.date, test.date)=0
and test.date='2019-11-13' group by test.date)
where test.date='2019-11-13'
但是当我对所有行都这样做时
update test set counte =
(select COUNT(*) from en_cours ,
test where DATEDIFF(DAY, en_cours.date, test.date)=0
group by test.date)
where test.date= (select CONVERT(date , en_cours.date) from en_cours)
他们说
“子查询返回了多个值。当 子查询遵循=,!=,<,<=,>,> =,或当子查询用作 表达式。”
请帮忙
答案 0 :(得分:1)
您的错误信息不言自明。您不能设置诸如WHERE 10 =((整数列表--10,20,30)之类的条件。当您使用=,!=,<,<=,>,> =符号时,子查询必须返回一个值,其中当您的查询返回的值不止1个且错误就在那里。您可以按照以下方式使用CTE来满足您的要求-
WITH CTE AS(
select test.date,COUNT(*) T
from en_cours
INNER JOIN test
ON en_cours.date = test.date
group by test.date
)
update A
SET A.counte = B.T
FROM Test A
INNER JOIN CTE B ON A.Date = B.Date