我有一个包含300,000行(1.6 GB)的大型数据库。我需要删除它们除了具有以下功能的那些:
main_sec=118
main_sec=Companies
type=SWOT
这是我准备的代码,但不知何故,它正在删除表的所有行:
DELETE FROM `swots`
WHERE (main_sec <> '118') OR
(main_sec <> 'Companies') OR
(type <> 'SWOT');
请帮我理解错误的位置。
答案 0 :(得分:2)
DELETE FROM `swots`
WHERE main_sec not in ('118', 'Companies')
and type <> 'SWOT'
答案 1 :(得分:1)
试试这个:
DELETE FROM `swots`
WHERE (main_sec not in ('118', 'Companies')) OR
(type <> 'SWOT');
问题是main_sec
总是不等于给定记录中这两个值中的一个。因此,每条记录都符合您版本中的where
条件。
答案 2 :(得分:1)
在新表中插入要保留的行(假设它们比剩余的行少),会更快:
INSERT INTO main_sec_new
SELECT
*
FROM main_sec
WHERE main_sec IN ('118','Companies')
and type = 'SWOT'
然后放下旧桌子