大连接上的 MySQL 重复条目检测

标签 mysql sql database join

我有一个如下所示的 sql 语句。我试图选择所有具有重复的条目,然后显示每个重复的条目。

假设基本选择的结果数据有

1 green michigan column4 column5 column6
3 orange michigan column4 column5 column6
11 purple florida column4 column5 column6
14 pink arizona column4 column5 column6
15 purple texas column4 column5 column6
20 orange california column4 column5 column6

我想得到的结果是

20 orange california column4 column5 column6
3 orange michigan column4 column5 column6
11 purple florida column4 column5 column6
15 purple texas column4 column5 column6

我把这个添加到我的选择语句的末尾

GROUP BY join4.color
HAVING count(join4.color) > 2

不过我只是得到

3 orange michigan column4 column5 column6
15 purple texas column4 column5 column6

主选择看起来像这样

SELECT
    join1.id,
    join4.color,
    join2.state,
    table1.column4,
    join5.column5,
    table1.column6
FROM
    table1
JOIN 1
LEFT JOIN 2
LEFT JOIN 3
LEFT JOIN 4
LEFT JOIN 5
WHERE
    table1.active = 1
AND
    table1.valid = 1
ORDER BY table1.column4 DESC

最佳答案

这可能不是最好的方法,但您可以使用从“GROUP BY”语句中获得的结果来仅提取具有在“GROUP BY”语句中的颜色的行。

所以用它作为子查询...

SELECT
    join1.id,
    join4.color,
    join2.state,
    table1.column4,
    join5.column5,
    table1.column6
FROM
    table1
JOIN 1
LEFT JOIN 2
LEFT JOIN 3
LEFT JOIN 4
LEFT JOIN 5
WHERE
    table1.active = 1
AND
    table1.valid = 1
AND
    join4.Color IN (SELECT Color
                    FROM JOIN4
                    GROUP BY join4.color
                    HAVING count(join4.color) > 2)
ORDER BY table1.column4 DESC

关于大连接上的 MySQL 重复条目检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32362181/

相关文章:

MySql 存储过程 else if 和多查询

mysql - 当从文件(批处理模式)重定向 SQL 输入时,为 mysql 命令行获取相同的输出

sql - 保持 SQL 干燥

java - 从 OracleJDBC 调用存储过程出现异常

php - MySQL动态链接以获取正确的行

mysql - 如何在netbeans中创建自动化的mysql脚本

SQL Server 详细查询(包含总计和总计)

sql查询获取最早日期

sql - 获取多行相等的人(Oracle SQL)

php - 从sql表中选择随机行时如何防止选择已删除的ID