Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
Sql 如果满足条件,则删除记录的所有实例_Sql_Ms Access - Fatal编程技术网

Sql 如果满足条件,则删除记录的所有实例

Sql 如果满足条件,则删除记录的所有实例,sql,ms-access,Sql,Ms Access,如果标志字段中的值为4,我将尝试删除记录的所有实例。这意味着他们已从电子邮件列表中取消订阅 样本数据: Customer# Email Name CustomerType Flag 001 email@email.com Bob Vet 1 001 email@email.com Bob Med 2 001 email@email.com

如果标志字段中的值为4,我将尝试删除记录的所有实例。这意味着他们已从电子邮件列表中取消订阅

样本数据:

Customer#       Email          Name   CustomerType   Flag
   001      email@email.com    Bob       Vet          1
   001      email@email.com    Bob       Med          2
   001      email@email.com    Bob       Pod          4

因此,由于存在一个实例,该记录的标志为4,因此应从该查询中删除所有3个。它们实际上不需要从数据库中删除,我只是不需要在查询中出现数据。如何处理此问题?

假设客户编号是将记录链接在一起的内容,则可以使用not exists子句:

这里有一种方法:

delete from sample
    where customer# in (select customer# from sample as s2 where flag = 4);
编辑:

您可以随时将其调整为选择:

三种方法

用途不存在 在不在的地方使用 使用连接 下面是join:Sstan提供了notexists,Gordon或多或少提供了where-in,但更改为not-in和select,您也可以使用它

没有表大小的翻译量和索引信息,我不能说哪一个性能最好,尽管不存在的是最受欢迎的

SELECT A.*
FROM TableName A
LEFT JOIN TableName B
 on A.Customer# = B.Customer#
and B.Flag = 4
WHERE B.Customer# is null

这会进行自联接,但仅对标记为4的一组记录进行自联接。然后,它将排除那些具有匹配项的记录;只返回没有4的客户。

我肯定您忽略了这一点:他们实际上不需要从列表中删除database@xQbert . . . 谢谢,我错过了。谢谢你的回复!谢谢你的信息!这对解决这个问题很有帮助。谢谢斯丹,我相信这会对我有用。我感谢你的帮助!
select s.*
from sample s
where customer# not in (select customer# from sample as s2 where flag = 4);
SELECT A.*
FROM TableName A
LEFT JOIN TableName B
 on A.Customer# = B.Customer#
and B.Flag = 4
WHERE B.Customer# is null