mysql - SQL:查找 A 列中的记录与 B 列中的重复记录

标签 mysql sql

我想知道你是否可以帮助我解决我遇到的 SQL 问题。

我的 table 看起来像

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

我想识别 ColumnA 中与 ColumnB 中重复的所有记录,因此查询应返回

ID    ColumnA     ColumnB
1       123          A
2       123          A
5       456          B
6       456          B

提前非常感谢。 干杯

最佳答案

如果您有可用的分析函数(MySQL 8.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;

关于mysql - SQL:查找 A 列中的记录与 B 列中的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51075964/

相关文章:

sql - 如何在 SQL 中查找作为子字符串的 int 值的 MIN 和 MAX?

mysql - 在 MySQL 中计算运行总计

php - 如何从一个数据库表中的组返回第一个值,MySQL

MySQL - 在 WHERE 子句中使用 REPLACE()

sql - 有没有办法关闭 SQL Server 中的隐式类型转换?

sql - Xcode iOS 电话目录应用程序。核心数据、sqlite 或

mysql - SQL 内连接与计数

php 查询 iOS 纬度和经度不搜索附近的 mysql 纬度和经度并带有 xml 输出

php - JSON_ENCODE 将所有数组值转换为 AJAX 请求中的字符串

mysql - 多对多与一对多