mysql - 选择 MySQL 表列中的非重复记录

标签 mysql mysql-workbench

我有一个只有 2 列的大表。一个是主 id 列,另一个是数据列。

我只需要选择表中不重复的记录。我尝试了下面的查询,但需要很长时间并且不确定它是否真的有效。

select * from (select column_name 
               from table_name 
               group by column_name 
               having count(*) = 1) x;

你觉得怎么样?

如果它能更快地完成工作,我也愿意尝试其他尝试。

最佳答案

您可以左连接同一个表或使用子查询来检查重复项。 这对于 SQL Server 来说应该更容易,因为它不会计算所有重复项。 像这样的事情:

SELECT
    t1.column_name 
FROM
    table_name AS t1
WHERE
    NOT EXISTS (
        SELECT
            *
        FROM
            table_name AS t2
        WHERE
                t2.column_name = t1.column_name
            AND t2.id != t1.id
    )

或者

SELECT
    t1.column_name 
FROM
    table_name AS t1
    LEFT JOIN table_name t2 ON (
        t2.column_name = t1.column_name
        t2.id != t1.id
    )
WHERE
    t2.column.name IS NULL

关于mysql - 选择 MySQL 表列中的非重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53435093/

相关文章:

php - 仅向表中添加的用户显示数据

mysql - 在 spring boot 上下文中使用 h2db 进行集成测试是不好的做法吗?

mysql-workbench - MySQL Workbench - 菜单中的重复表命令在哪里?

mysql - 将数据从 CSV 文件导入 Amazon Web Services RDS MySQL 数据库

MySQL Workbench 错误代码 : 1074. 列长度对于列来说太大

mysql - Mysql 工作台在应用时显示查询

mysql - 选择促销价

php - MySQL PDO 不适用于整数

php - 评估目的 | SQL转换?

php - 通过表单选择选项插入 mysql 外键值