【问题标题】:Eliminating Duplicate rows in Postgres消除 Postgres 中的重复行
【发布时间】:2010-11-12 05:54:10
【问题描述】:

我想删除从 Postgres 中的 SELECT 查询返回的重复行

我有以下问题

SELECT DISTINCT name FROM names ORDER BY name

但这不知何故不能消除重复的行?

【问题讨论】:

  • 我正在使用一个古老的 PostgreSQL 7.3.4 版本
  • 不是重复的。 @Flimzy ... 一个不同的问题,标题相当模糊。

标签: postgresql


【解决方案1】:

PostgreSQL 区分大小写,这可能是个问题 DISTINCT ON 可用于不区分大小写的搜索(在 7.4 上测试)

SELECT DISTINCT ON (upper(name)) name FROM names ORDER BY upper(name);

【讨论】:

    【解决方案2】:

    也许某些字符看起来相同但不同(例如 LATIN 'a'/CYRILLIC 'а')

    【讨论】:

      【解决方案3】:

      不要忘记在上面添加一个 trim() 。否则“记录”和“记录”将被视为单独的实体。这最终伤害了我,我不得不将我的查询更新为:

      SELECT DISTINCT ON (upper(trim(name))) name FROM names ORDER BY upper(trim(name));
      

      【讨论】:

        【解决方案4】:

        在 Postgres 9.2 及更高版本中,您现在可以将列强制转换为 CITEXT 类型,甚至可以使列不必强制转换。

        SELECT DISTINCT name::citext FROM names ORDER BY name::citext
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-12-18
          • 2023-02-08
          • 1970-01-01
          • 2014-07-31
          • 2022-07-18
          • 1970-01-01
          • 2023-03-10
          • 2023-03-14
          相关资源
          最近更新 更多