【问题标题】:SQL - Delete the specific rows where sum = 0SQL - 删除总和 = 0 的特定行
【发布时间】:2022-11-27 23:57:42
【问题描述】:

这是我的桌子(之前):

结果应该是这样的(之后):

我已经尝试过我在这里找到的这个查询:

with t as (
      select t.*,
             row_number() over (partition by id, value order by id) as seqnum
      from tmp_table t
     )
delete from t
    where exists (select 1
                  from t t2
                  where t2.id = t.id and t2.value = - t.value and t2.seqnum = t.seqnum
                 );

但它没有给出预期的结果。 Id 10 也必须删除,因为三列的总和为零。

不是预期的结果:

谢谢。

【问题讨论】:

  • 请以文本而非图像形式提供表格结构和示例数据。还请指定您使用的是哪个 DBMS
  • 根据图像,ID = 10 的值之和不应作为结果给出 0,但不会返回任何行,不是吗?

标签: sql-delete


【解决方案1】:

我认为不需要删除任何记录,而是通过使用带有聚合的 SELECT 语句根据需要显示,例如

SELECT ID, SUM(value)
  FROM tmp_table
 GROUP BY ID  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    相关资源
    最近更新 更多