mysql - SQL:在 A 列中查找与 B 列重复的记录
问题描述
我想知道您是否可以帮助我解决我遇到的 sql 问题。
我的桌子看起来像
ID ColumnA ColumnB
1 123 A
2 123 A
3 123 B
4 456 A
5 456 B
6 456 B
7 789 A
8 789 B
9 789 C
我想识别在 ColumnB 中有重复的 ColumnA 的所有记录,因此查询应该返回
ID ColumnA ColumnB
1 123 A
2 123 A
5 456 B
6 456 B
提前非常感谢。干杯
解决方案
如果您有可用的分析函数(MySQL8.x
和更高版本),请使用它们:
SELECT ID, ColumnA, ColumnB
FROM
(
SELECT *, COUNT(*) OVER (PARTITION BY ColumnA, ColumnB) cnt
FROM yourTable
) t
WHERE cnt > 1;
如果您没有分析功能,那么我们必须做更多的工作:
SELECT t1.*
FROM yourTable t1
INNER JOIN
(
SELECT ColumnA, ColumnB, COUNT(*) AS cnt
FROM yourTable
GROUP BY ColumnA, ColumnB
) t2
ON t1.ColumnA = t2.ColumnA AND t1.ColumnB = t2.ColumnB AND t2.cnt > 1;
推荐阅读
- python-3.x - Chatterbot 中未定义“聊天机器人”
- python - 将 fit_generator 与连体网络一起使用时出错
- reactjs - 如何在reactjs中动态设置谷歌方向api的旅行模式?
- python - 无法从 Morningstar 抓取 dataid - 如何从 Python 访问网络检查工具?
- c++ - 如何使 const 可变 lambda 捕获列表的某些成员?
- ruby - 如何在不读取 HTTP 资源的其余部分的情况下读取标头?
- matlab - 条形图 x 轴 Matlab
- r - 是否有与 Panda 的 to_datetime 类似的 R 方法?Char 到 POSIXct 问题
- oracle - 如何在 Oracle 中计算多重回归
- mysql - 我正在处理查询,当有活动时,我要计算日期,如果日期范围内没有活动,我也想得到计数 0