在 WHERE 子句中使用聚合进行 SQL 更新

标签 sql sql-server-2005

我正在尝试设置列 date 的日期字段,让我们说表 1 中的“10/11/2012”,当与该 id 相关的所有金额表 2 的总和(通过 fk_id)= 0 时。这就是我的意思:

从:

表格1

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

表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

表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

有人可以帮我吗?

最佳答案

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)

关于在 WHERE 子句中使用聚合进行 SQL 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12221466/

相关文章:

sql - 如何从 Oracle 中的声明/开始/结束 block 返回行?

sql - 我需要在 select 语句中拆分字符串并插入到表中

mysql - 存储过程问题,在本地运行但不在服务器上运行

sql - 根据别名列名进行过滤

MySQL 在一次查询中获取 mindate 和 maxdate

sql - 关于 max creation_time 和 group by 的 Postgres 查询帮助

sql - 根据行值拉取列

sql-server-2005 - 如何在 SQL Server 2005 存储过程中使用 PIVOT 连接两个 View

sql - 在可安排培训师的定义空间内查找连续日期

sql-server - 如何判断变量 (-v) 是否在命令行 (SQLCMD) 上定义