【问题标题】:SQL Server Update with group bySQL Server 更新与分组依据
【发布时间】:2012-09-09 22:15:19
【问题描述】:
 insert into tableA (column1) 
 select min(tableC.column1)
 from tableB 
 inner join tableC on (tableC.coumn2 = tableB.column1
 and tableB.column2 = tableA.column2) 
 group by tableA.column2

如何根据tableB.column2 = tableA.column2 标准将上述内容更改为使用 group by 进行更新,而不是使用 group by 插入?

请注意,我使用的是SQL SERVER 2008.

【问题讨论】:

标签: sql sql-server-2008 group-by sql-update


【解决方案1】:
  Update A set Column1 = minC    
    from (select Ab.Column2, min(C.Column1) as minC
            from A Ab
            inner join B on Ab.Column2 = B.Column2
            inner join C on C.column2 = B.Column2 --No need to add again the A.col2 = B.col2
            group by Ab.Column2) Grouped where A.Column2 = Grouped.Column2

这是你想要的吗? 这将为每个 columnA 获取 C.Column1 最小值,并将根据条件 A.Column2 = Grouped.Column2A.Column1 中更新它(这是您之前插入的位置)。

这是SQL-Fiddle Demo

【讨论】:

  • 另外一个问题:如果表 A 被定义为@A,那么它为什么会在查询的最后一行返回错误:必须声明标量变量“@A”,以及如何我解决了这个问题?
  • 这是另一个问题,您应该使用声明表的示例和您所做的查询来创建。大概是别名的问题,或者表的范围
  • 问题是现在我不能写更新@A sometable ... where sometable.column2 = Grouped.column2 和其他一切都保持不变。
  • 什么是“@a sometable”?在更新词之后,你应该输入一个表名,或者一个别名,而不是两者都
  • stackoverflow.com/questions/12362141/…发布了另一个问题
猜你喜欢
  • 2011-02-20
  • 2011-06-09
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多