【问题标题】:How to filter my query and remove duplicates?如何过滤我的查询并删除重复项?
【发布时间】:2021-08-05 21:42:12
【问题描述】:

我正在尝试从下表中查询所有记录,但没有重复,如下:

ID Name Color
1 apple Green
2 apple red
3 apple Yeelow
4 banana green
5 banana yellow
6 grape green
7 grape red
8 grape white

需要结果:

ID Name Color
1 apple Green
2 red
3 Yeelow
4 banana green
5 yellow
6 grape green
7 red
8 white

【问题讨论】:

  • 您使用哪种数据库系统?
  • 我正在使用带有“DB Browser For SQLite”的 Android Studio

标签: sql sqlite duplicates where-clause


【解决方案1】:

这种类型的操作通常在应用层比在数据库中做得更好。但是你可以在数据库中做到这一点:

select id,
       (case when row_number() over (partition by name order by id) = 1
             then name
        end) as name,
       color
from t
order by name, id;

这是按id 顺序枚举每个名称的行,并且只显示第一个名称的名称。

非常重要的是,外部order by 与窗框规范一致——没有外部order by,结果可以是任何顺序。而且您的结果需要特定的顺序。

【讨论】:

  • 在“DB Browser For SQLite”中执行时完美完成,但在 Android Studio 中实现时,“Case”中的“C”带有红色下划线,并出现以下消息。 Err: Select , VALUES or WITH expected , got 'CASE'... 好像 Android studio 不支持 'Case'
  • @DanyDamianos 。 . .这真的很奇怪。 CASE 是标准 SQL,从我记事起就一直是 SQLite 的一部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-16
  • 2014-01-27
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 2012-11-02
  • 2016-07-20
相关资源
最近更新 更多