Sql server 从SQL Server中的两个表中删除

Sql server 从SQL Server中的两个表中删除,sql-server,sql-delete,Sql Server,Sql Delete,我有两个有很多IP地址的表,我想从两个表中删除相同的IP地址。我试了两次,但都不管用 我尝试的第一个查询是: Delete FROM table1, table2 WHERE table1.IpAdd != table2.Ipaddress 第二个问题是: DELETE table1, table2 FROM table1 INNER JOIN table2 WHERE table1.IpAdd = table2.Ipaddress 为什么不使用表1中的外键将它们绑定到表2中呢。所

我有两个有很多IP地址的表,我想从两个表中删除相同的IP地址。我试了两次,但都不管用

我尝试的第一个查询是:

Delete FROM table1, table2 
WHERE table1.IpAdd != table2.Ipaddress
第二个问题是:

DELETE table1, table2  
FROM table1 
INNER JOIN table2 
WHERE table1.IpAdd = table2.Ipaddress

为什么不使用表1中的外键将它们绑定到表2中呢。所以,若主键中有delete,它也会自动删除其他表中的类似条目

要创建外键研究,请执行以下操作:


您的sql语句相互冲突。但是,您在文本中声明要删除ip地址匹配的记录。在任何情况下,sql server都不支持像您尝试的那样从2个表中删除。

简单的方法是使用select和第二次尝试的join将ip地址插入到临时表中,并从每个连接到临时表的表中删除记录。

如果要删除两个表中的重复行,请使用以下脚本:

DECLARE @table Table([Ip] varchar(20))

SELECT t1.IpAdd
INTO @table
FROM table1 t1 INNER JOIN table2 t2 On t1.IpAdd = t2.Ipaddress

DELETE FROM table1
WHERE table1.IpAdd In (SELECT [Ip] FROM @table)

DELETE FROM table2
WHERE table2.Ipaddress In (SELECT [Ip] FROM @table)

我想去掉两个表中的两个相似数据。是的,因此当您从表1中删除一个条目,如
192.168.0.10
时,它会自动从表2中删除同一行。我还添加了一个映像。为此,您至少需要一个表将ip列作为主键。