SQL重复数据删除帮助?

时间:2011-11-15 23:47:55

标签: mysql sql

我确信有很多方法可以做到这一点,但是现在我很难找到适合数据的方法。

我基本上有一个包含重复项的表,其中包含与其相关的其他字段以及优先于其他字段的源详细信息。所以基本上我在我的表中添加了一个“优先级”字段,然后根据源优先级更新。我现在需要选择不同的记录来填充我的“唯一”记录表(然后我将应用唯一的键约束来防止在所需的字段上再次发生这种情况!)....

所以我基本上就是这样的:

Select phone, carrier, src, priority
from dbo.mytable

所以基本上我需要按照优先顺序(1,2,3,4等)拉出电话上的明显区别,并且基本上将其余的其他数据随之拉出并仍然保持手机上的独特性。

我尝试使用具有最小(优先级)值的同一表中的子选择来做一些事情,但结果似乎仍然没有意义。任何帮助将不胜感激。谢谢!

编辑我需要从同一个表中重复数据删除,但是如果需要的话,我可以根据我的select语句填充一个新表,以提取唯一身份。这是在MSSQL中,但认为任何有SQL知识的人都可以回答。

例如,假设我有以下行:

5556667777, ATT, source1, 1
5556667777, ATT, source2, 2
5556667777, ATT, source3, 3

我需要首先根据优先级1提取唯一身份.....问题是,我需要根据优先级顺序从表中删除所有其他欺骗,而不会再次使用相同的电话号码两次。有意义吗?

1 个答案:

答案 0 :(得分:1)

所以你说组合(电话,优先级)在现有表中是唯一的,你想选择优先级最小的行吗?

SELECT mytable.phone, mytable.carrier, mytable.src
  FROM mytable
  INNER JOIN (
    SELECT phone, MIN(priority) AS minpriority
      FROM mytable
      GROUP BY phone
  ) AS minphone
  ON mytable.phone = minphone.phone
  AND mytable.priority = minphone.minpriority