当前位置: 首页 > 面试题库 >

删除与相交

刘嘉木
2023-03-14
问题内容

我有两个表,它们的列数相同,没有主键(我知道,这不是我的错)。现在,我需要删除表B中存在的表A中的所有行(它们相等,每行30列)。

我认为最直接的方法是执行INNER JOIN并解决我的问题。但是,所有列的写条件(担心NULL)也不尽人意(也许是因为我的表也不尽人意)。

我要用INTERSECT。我不知道该怎么做?这是我的第一个问题:

我试过了(SQL Fiddle):

declare @A table (value int, username varchar(20))
declare @B table (value int, username varchar(20))

insert into @A values (1, 'User 1'), (2, 'User 2'), (3, 'User 3'), (4, 'User 4')
insert into @B values (2, 'User 2'), (4, 'User 4'), (5, 'User 5')

DELETE @A 
    FROM (SELECT * FROM @A INTERSECT SELECT * from @B) A

但是所有行均已从table中删除@A

这使我想到第二个问题:为什么命令DELETE @A FROM @B从表中删除所有行@A


问题答案:

试试这个:

DELETE a 
FROM @A a
WHERE EXISTS (SELECT a.* INTERSECT SELECT * FROM @B)

从@A中删除,对于@A中的每个记录,都有一个匹配项,其中@A中的记录与@B中的记录相交。



 类似资料:
  • 我已经回答了大多数类似的问题,但没有一个能解决我的问题。我的表有四列:id、用户名、标题和日期。我想在用户单击按钮(锚定标记)时删除与特定用户名关联的整行。请问,我如何做到这一点?这是我试过的密码。 php 超文本标记语言 上面的代码重定向了页面,但没有删除任何内容。

  • 我有以下型号: 当我运行下面的查询时,用户模型也被删除 有没有办法在不删除用户的情况下删除问题? 我试着重复这些问题但没有用 我认为查询集是懒惰的,所以也许我需要在删除之前评估它,所以我打印了它,但这不起作用。 我知道,将ForeignKey设置为null将为我提供诸如clear和remove之类的方法,但我不想这样做,因为我不希望出现任何孤立的用户问题。 我更新了ForeignKey,如下所示

  • 已移除。[重复] ........ ..

  • 问题内容: 我有一张桌子。为了快速升级/部署网站,我做了一个新表,其中包含一些新数据,方法是: 现在每个表都有一个PK列,看起来像: 重要的一点是,两个表都依赖于完全相同的序列。没有。就我的目的而言,这似乎还可以。 此后,我加载了新数据并重命名了表,以便将其作为实盘接管,而原始表变成了。现在我尝试删除: 足够公平,列默认值仍取决于顺序。 这是踢脚线。 因此,不再对序列具有任何可见的依赖关系,但是它

  • 你只要使用一对方括弧就能够删除一个矩阵的行和列。以 X = A; 开始。然后,删除X的第二列,使用 X(:,2) = [] 这使X变为 X = 16 2 13 5 11 8 9 7 12 4 14 1 如果你删除矩阵的单个元素,其结果就不再是矩阵了。所以,如下的表达式 X(1,2) = [] 导

  • 我在nginxweb服务器上,我想删除来自url的扩展。 我目前有以下会议: 如果试图遵循一些类似的案例说明,但似乎没有任何工作与我的conf。 问题是这段代码 在两种情况下运行良好: 客户要求https://mywebsite.com/page.php:好的 客户要求https://mywebsite.com/page:好的 不重写url! 如果客户端试图访问具有文件扩展名的页面,我需要告诉NG