首页 > 解决方案 > 要删除的重复sql

问题描述

我有数据库记录

在此处输入图像描述

我的 sql:

    SELECT
    DISTINCT name, date(mod_wr)
FROM
    test.object_stg
WHERE
    ir = '4552724'
GROUP BY
    name, date(mod_wr)
ORDER BY name

最后一条记录与最后一条相同。它只有一个不同的日期。是否有可能以某种方式查询以返回“名称”列发生变化的所有记录?对于记录 4 和 5,名称相同,只是日期不同。我希望它只返回 4 和 5 的记录,因为没有变化。

标签: sqlplsqldb2

解决方案


从您的样本数据中,您有 3 个不同的名称。但是,您不能在 select 语句中使用 distinct,因为它适用于列出的每个字段,并且没有一个日期可以提供完全匹配。

但是,您可以使用 group by 语句来将您的标题整理在一起。

// MySQL 5.6 Statement
select name, date(mod_wr) from object_stg group by name;
// MSSQL 2017 Statement
select name, max(mod_wr) from object_stg group by name;

两个语句都返回 3 行,其中仅显示 BMW、1.0 GL 和 1.0 GLS 以及单个日期。

SQL小提琴


推荐阅读