sql - 如何在不分组的情况下进行选择以过滤掉重复项?我希望它们都单独显示?
问题描述
我在数据库中有一些数据被分类到一个文本列中,每个文本项的单独标识符和每个文本列的语言。
SELECT Text, Language, COUNT(*)
FROM TableA
WHERE Language = 'English'
GROUP BY Text, Language
HAVING COUNT(*) > 1
此查询为我提供了我需要的数据列表,但是我有 2 个问题,它被分组,因此结果显示为:
| Text | Language | Amount Counted |
|------------|----------|-----------------|
| Hello Text | English | 5 |
问题是我可以根据文本进行排序以进行计数,但是我无法弄清楚如何在其中添加唯一标识符并将它们列为一个大列表?例如,文本“你好”可能在列表中出现 5 次,我会得到如上所示的内容。但是每个版本的 hello 可能会有不同的 ID 值 Hello 的第一个版本是 (ID 232) 而第二个版本是 (ID 546) 我如何添加同一个表中的 ID 值并列出所有重复的他们的 ID 值?
所以我会得到作为一个例子:
| Text | Language | ID |
|----------------|----------|------|
| Hello Text | English | 232 |
| Hello Text | English | 546 |
| Hello Text | English | 643 |
| Hello Text | English | 745 |
| Hello Text | English | 1353 |
| Other Text | English | 343 |
| Other Text | English | 433 |
| Different Text | English | 433 |
| Different Text | English | 437 |
| Different Text | English | 563 |
| Different Text | English | 898 |
解决方案
你只想要一个窗口功能吗?
SELECT text, language, id
FROM (SELECT a.*, COUNT(*) OVER (PARTITION BY Text) as cnt
FROM TableA a
WHERE Language = 'English'
) a
WHERE cnt > 1
ORDER BY id;
推荐阅读
- javascript - 滚动时如何获取浏览器窗口的坐标
- python - 只取函数输出python的第一个元素
- flutter - Flutter:在共享首选项中保存切换按钮选择
- python - GRU,我倒着输入时区,但结果还不错。你能告诉我确切的输入吗?
- python-3.x - 如何在同一行中输入两个整数?
- microsoft-graph-api - 图形 api 更新事件无法正常工作
- java - IntelliJ 抑制某些方法的弃用警告?
- php - php 日期解释请(回到周块)
- javascript - 如何更改 TS-File 中的样式?
- javascript - Material UI Grid 设置水平线而不是响应性