在MySQL表列中选择非重复记录

时间:2018-11-22 16:33:30

标签: mysql mysql-workbench

我有一张只有2列的大桌子。一个是主ID列,另一个是数据列。

我只需要选择表中未重复的记录。我尝试了以下查询,但需要花费很多时间,不确定是否确实有效。

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

您怎么看?

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

1 个答案:

答案 0 :(得分:0)

您可以离开联接同一张表,或者使用子查询检查重复项。 对于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
    )

OR

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