如果其他列具有相同的值,则从一列中删除重复值

问题描述 投票:0回答:1

我有一张表,我想避免基于一列的重复值。

如果所有站点都具有相同的版本,我需要从 CustomerName 中删除重复项。

在表格中我想要第 2、3、4、5 行(不是 6,因为 5 和 6 有相同的版本)然后是 7、9、10、11、12(不是 13 和 14,因为 12、13、14 有版本)

sql mysql qsqlquery
1个回答
1
投票
DELETE t1
FROM your_table t1
JOIN (
    SELECT CustomerName, Version
    FROM your_table
    GROUP BY CustomerName
    HAVING COUNT(DISTINCT Version) = 1
) t2 ON t1.CustomerName = t2.CustomerName
WHERE t1.Version <> t2.Version;
  • subquery identifies
    CustomerName
    val that have only one distinct Version
  • CustomerName
  • 上用这个子查询加入原始表
  • 删除
    Version
    val不同于为
    CustomerName
  • 确定的单一版本的行

更新 甲骨文语法:

DELETE FROM your_table
WHERE CustomerName IN (
    SELECT CustomerName
    FROM your_table
    GROUP BY CustomerName
    HAVING COUNT(DISTINCT Version) = 1
)
AND Version NOT IN (
    SELECT Version
    FROM your_table
    GROUP BY CustomerName, Version
    HAVING COUNT(*) > 1
);
© www.soinside.com 2019 - 2024. All rights reserved.