尝试使用不同的值更新所有行

时间:2019-11-14 10:18:02

标签: sql sql-server

当我连续进行一次工作时

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)

他们说

  

“子查询返回了多个值。当   子查询遵循=,!=,<,<=,>,> =,或当子查询用作   表达式。”

请帮忙

1 个答案:

答案 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