【问题标题】:select distinct without including duplicates选择不同的而不包括重复项
【发布时间】:2016-10-22 21:36:18
【问题描述】:

我有一个如下所示的表,我需要一个具有唯一 Id 值的表和另一个重复 Id 值的表。

我的问题是我不能使用“select distinct”语句,因为它会包含一次重复的 Id 值。

身份证

80004 一个

80008 乙

80019 C

80086 一个

80086 C

80086 乙

80066 一个

80099 C

80100 一个

80087 C

80087 一个

我需要将前一个表分成两个表,如下所示:

身份证

80004 一个

80008 乙

80019 C

80066 一个

80099 C

80100 一个

身份证

80086 一个

80086 C

80086 乙

80087 C

80087 一个

【问题讨论】:

  • 我不明白这个拆分的逻辑。请展开。
  • 我只想要一张表,其 ID 只有一个组(如 80004、80008...)及其组。我还需要另一个表,其 ID 可以有不同的组(80086 和 80087)及其组(A、C 和 B 用于 80086,C 和 A 用于 80087)。
  • 但是为什么80004,80008是一个组而不是80004,80086??这背后的逻辑是什么
  • 而不是说 80004 和 80008 我会说那是一封信(我编辑问题)

标签: postgresql duplicates distinct-values


【解决方案1】:

通过使用子查询:

select A.id , id_value from

( select id from mytable group by id having count(id_value) >1 ) A
inner join mytable using(id)


select A.id , id_value from

( select id from mytable group by id   having count(id_value) <=1   ) A
inner join mytable using(id)

这里是SQLFIDDLE

【讨论】:

    猜你喜欢
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 2013-04-23
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    相关资源
    最近更新 更多