在WHERE子句中使用聚合函数的SQL更新

4
我将尝试在表1中设置日期字段为"10/11/2012",当与该id相关的所有table 2中的金额之和(通过fk_id)= 0。下面是我的意思:
从:
表1
    id    date
    1     10/11/2011
    2      
    3     10/12/2011

table 2

    fk_id    amount
    1     200
    2     0
    2     0
    3     100

致:

表格1

    id    date
    1     10/11/2011
    2     10/11/2012
    3     10/12/2011

table 2

    fk_id    amount
    1     200
    2     0
    2     0
    3     100

这是我目前拥有的内容:

update table1
set date = '10/11/2012
FROM table1 inner join table 2 on table1.id = table2.fk_id
HAVING sum(table2.amount) = 0

有人能帮我解决这个问题吗?


为什么在table1更新后,2 : 10/11/2012会出现? - TheTechGuy
@Thecrocodilehunter - 因为“表2”上值为“2”的“amount”总和为零。 - Lamak
2个回答

5
UPDATE table1 
SET date = '10/11/2012' 
FROM table1 
WHERE id IN (SELECT FK_ID FROM table2 GROUP BY FK_ID HAVING SUM(Amount)=0)

0

这应该可以工作:

UPDATE T1
SET [date] = '20121011'
FROM table1 T1
INNER JOIN (SELECT fk_id, SUM(amount) Amount
            FROM table2
            GROUP BY fk_id
            HAVING SUM(amount) = 0) T2
ON T1.id = T2.fk_id

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接