如何删除MYSQL中的列,其中列不包含某些数据

时间:2015-06-14 00:58:33

标签: mysql database

我负责修复的数据库充斥着垃圾邮件。数据库中有一个名为 url 的表。有一个名为别名的列。 2,000个正确的别名行应该存在,而另一个 100,000+是垃圾邮件。我有一个逗号分隔的列表,列出了应该存在的所有正确值。 Alias中的示例值为z6j6h,它们都是5个字母/数字。如何删除好列表中不包含值的每一行?

4 个答案:

答案 0 :(得分:2)

使用find_in_set()功能:

delete from mytable
where find_in_set(alias, 'abcde,ghijk,etc') = 0

答案 1 :(得分:2)

DELETE
  FROM (table)
 WHERE alias NOT IN ('ASDFG', 'ABCDE')

答案 2 :(得分:1)

不要在控制台上为简洁而道歉!一种方法是将正确的值放在另一个表中,并在主表和正确值表上运行外连接。这将为您提供主表的所有行,其中NULL标记垃圾邮件。然后删除具有这些空值的行。有关加入示例,请参阅https://stackoverflow.com/a/9214674/2877364,删除时https://stackoverflow.com/a/2763245/2877364

答案 3 :(得分:0)

delete from url
where alias not in (
  'my',
  'list',
  'of',
  'good',
  'aliases'
);