【问题标题】:Postgres Query to delete duplicated rows by many parametersPostgres查询通过许多参数删除重复的行
【发布时间】:2021-05-09 01:43:15
【问题描述】:

我有一个包含以下字段的表:Guide、FileSource、CodeName。所有这些字段都是文本类型。某些字段具有相同的值,有时这些值为 NULL。我进行了删除具有相同参数的重复行的查询,但是,当某些值等于 NULL 时,没有任何已删除的行。如何更改将删除具有相同参数的行的查询包括等于 NULL 的值?

DELETE FROM public.TableName as T1
USING public.TableName as T2
WHERE T1.ctid > T2.ctid
AND T1."Guide" = T2."Guide"
AND T1."FileSource" = T2."FileSource"  
AND T1."CodeName" = T2."CodeName";

【问题讨论】:

    标签: postgresql null duplicates sql-delete


    【解决方案1】:

    NULL 不能直接比较(用“=”)。您可以使用像这样的 coalesce 语句来处理 NULL:

    DELETE FROM public.TableName as T1
    USING public.TableName as T2
    WHERE T1.ctid > T2.ctid
    AND COALESCE(T1."Guide",'') = COALESCE(T2."Guide",'')
    AND COALESCE(T1."FileSource",'') = COALESCE(T2."FileSource",'')
    AND COALESCE(T1."CodeName",'') = COALESCE(T2."CodeName",'');
    

    【讨论】:

      猜你喜欢
      • 2017-06-13
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 2021-11-07
      • 2017-07-30
      相关资源
      最近更新 更多