编写SQL查询以查询和更新同一表

Mayur Jadhav

我对SQL不太友好,因此需要在表上编写SQL更新/删除查询。要求如下。

表A:

Col1(PK)Col2 Col3数量

1代码1值1 5

2代码2值2 2

3代码1值1 3

4代码3值3 8

考虑上表,其中Col2和Col3的多个行具有相同的值。我想编写一个查询,该查询将删除Col2和Col3的重复组合并求和结果记录的数量。

结果应该是这样的:

Col1(PK)Col2 Col3数量

1代码1值1 8

2代码2值2 2

4代码3值3 8

杰米茨

您将需要分两部分进行此操作,并且如果要确保数据的完整性,则应将这两部分包装在一个事务中。

第一部分更新所需的行Quantity,第二部分删除现在重复的行。

BEGIN TRANSACTION

UPDATE TableA
SET Quantity=upd.Quantity
FROM TableA a
INNER JOIN (
    SELECT MIN(Col1) AS Col1, SUM(Quantity)  AS Quantity
    FROM TableA
    GROUP BY Col2, Col3 
) upd
ON a.Col1 = upd.col1

;WITH DELETES
AS
(
  SELECT Col1,ROW_NUMBER() OVER (PARTITION BY Col2,Col3 ORDER BY Col1) rn
  FROM TableA
)
DELETE FROM TableA WHERE Col1 IN (
    SELECT Col1 FROM DELETES WHERE rn>1
)

COMMIT TRANSACTION

实时示例:http : //www.sqlfiddle.com/#!3/9efa9/7

(编辑:已更新,可解决注释中提到的问题)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据同一表的查询更新表

来自分类Dev

MySQL更新与同一表子查询

来自分类Dev

在同一表中的更新上的子查询mysql

来自分类Dev

SQL:查询同一表中的一列

来自分类Dev

更新SQL查询以基于同一表中的ID更改字段

来自分类Dev

SQL从同一表中基于查询删除行?

来自分类Dev

在同一表上的SQL嵌套查询

来自分类Dev

同一表上的SQL子查询

来自分类Dev

SQL从同一表中基于查询删除行?

来自分类Dev

SQL查询同一表的重叠日期

来自分类Dev

SQL查询同一表中的多个值和多个键

来自分类Dev

同一表上的子查询

来自分类Dev

来自同一表的递归查询

来自分类Dev

一起更新和选择查询以更新同一表中的表数据

来自分类Dev

更新查询具有引用同一表的内部查询

来自分类Dev

如何在同一查询中的同一表之间插入和删除?

来自分类Dev

使用同一表上的子查询优化查询

来自分类Dev

如何在Oracle SQL中使用相同的子查询更新同一表中的多个列

来自分类Dev

查询以使用同一表的平均值更新表中的值

来自分类Dev

MySQL更新表并在子查询中从同一表中选择

来自分类Dev

在父表为PK的SQL中的同一表查询中递归父表/子表

来自分类Dev

表和同一表上的子查询之间的内部联接

来自分类Dev

SQL查询基于同一表中其他列的值从表中提取日期?

来自分类Dev

MS SQL在一个查询中从同一表中检索相关数据

来自分类Dev

用于引用同一表中另一列的 SQL 查询

来自分类Dev

不同的MYSQL查询性能,针对同一表的排序和限制

来自分类Dev

来自同一表和多个where条件的多个总和查询

来自分类Dev

不同的MYSQL查询性能,针对同一表的排序和限制

来自分类Dev

SQL查询比较同一表中多个返回结果的日期

Related 相关文章

热门标签

归档