Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 用于从表中删除所有内容并仅保留必需行的SQL查询_Mysql_Sql - Fatal编程技术网

Mysql 用于从表中删除所有内容并仅保留必需行的SQL查询

Mysql 用于从表中删除所有内容并仅保留必需行的SQL查询,mysql,sql,Mysql,Sql,下面是MySQL中的测试表 fid sid data A B 67 C D 54 E F 53 G H 26 I J 23 K L 17 M N 64 O P 83 Q R 93 S T 45 U V 98 W X 28 Y Z 51 这张表每天都会得到更多的数据。现在我的目标是在这里只保留几行,并从这里删除所有其他行。现在要保留哪些行,必须从另一个表中获取。 让我们举一个例子,我们只需要保

下面是MySQL中的
测试

fid sid data
A   B   67
C   D   54
E   F   53
G   H   26
I   J   23
K   L   17
M   N   64
O   P   83
Q   R   93
S   T   45
U   V   98
W   X   28
Y   Z   51
这张表每天都会得到更多的数据。现在我的目标是在这里只保留几行,并从这里删除所有其他行。现在要保留哪些行,必须从另一个表中获取。 让我们举一个例子,我们只需要保留(fid=I和sid=J)和(fid=s和sid=T)以及(fid=C和sid=D)的行。现在我需要一个只保留这些行的查询,从这里删除所有其他内容

我尝试了下面的查询,但似乎不起作用

DELETE FROM `test` WHERE (`fid` != 'I' AND `sid` != 'J') AND (`fid` != 'S' AND `sid` != 'T') AND (`fid` != 'C' AND `sid` != 'D')

请同样帮助我。

设置如下条件:

DELETE FROM `test` 
WHERE (fid, sid) NOT IN (('I', 'J'), ('S', 'T'), ('C', 'D'))
请参阅。
结果:

如果要保留的行是通过查询获取的,则更改为:

DELETE FROM `test` 
WHERE (fid, sid) NOT IN (SELECT col1, col2 FROM .....)

我也得到了这个问题的答案

DELETE FROM `test` WHERE NOT (fid = 'I' AND sid = 'J') AND NOT (fid = 'S' AND sid = 'T') AND NOT (fid = 'C' AND sid = 'D')
DELETE FROM `test` WHERE NOT (fid = 'I' AND sid = 'J') AND NOT (fid = 'S' AND sid = 'T') AND NOT (fid = 'C' AND sid = 'D')