3

假设我在表 x 中有一个名为 source 的列。个别条目可以像;

Id   c1   c2      source ...
1    a     b      something
2    b     a      something  
3    a     b      somethingelse
4    c     a      somethingelse
5    a     b      something
6    b     c      something

如何删除源中相同元素少于 3 个的条目?例如,由于源值somethingelse出现 2 次,我需要删除了 somethingelse的所有条目。

4

4 回答 4

4
DELETE  a
FROM    tableName a
        INNER JOIN
        (
            SELECT  source
            FROM    tableName
            GROUP BY SOURCE
            HAVING COUNT(*) < 3
        ) b ON a.source = b.source

为了获得更快的性能,还需要做一件事,将 INDEX 添加到 column SOURCE

于 2013-01-16T15:21:58.307 回答
0

大约像这样的东西可以完成这项工作

DELETE FROM TABLE_T1 WHERE ID IN (
   SELECT ID FROM TABLE_T1 GROUP BY SOURCE HAVING COUNT(*) < 3
)
于 2013-01-16T15:22:25.120 回答
0
DELETE  id
FROM    yourtable a
JOIN    (
        SELECT  *
        FROM    yourtable
        GROUP BY
                source
        HAVING  COUNT(*) > 3
        ) b
ON      a.id = b.id
于 2013-01-16T15:25:28.987 回答
0
DELETE FROM x WHERE id IN
( SELECT id FROM
  ( SELECT id, COUNT(source) AS n
      FROM x GROUP BY source 
      HAVING n < 3
  )
)
于 2013-01-16T15:26:21.057 回答