MySQL如何删除一个表中另一个表中的记录

发布于 2024-07-24 23:13:24 字数 352 浏览 3 评论 0原文

我的表 A 有近 15000 个条目。 我有第二个表 B,其中有 7900 个条目,与表 A 具有公共字段。

我需要将表 A 中的所有条目提取到第三个临时表 C 中,除了表 B 中也出现的条目。虽然听起来很简单,但我还没有找到一种方法来做到这一点。 我得到的最接近的是:

INSERT INTO tableC
SELECT * 
FROM tableA
    INNER JOIN tableB
        ON tableA.field IS NOT tableB.field

此 SQL 仅选择表 A 中的所有内容,甚至是表 B 中的条目。

有什么想法我哪里出错了吗?

I have table A with close to 15000 entries. I have a second table B with 7900 entries with a common field with table A.

I need to extract into a third temporary tableC all entries from table A except the ones that also appear in table B. Simple as it may sound, i havent found a way to do it. The closest i got was this:

INSERT INTO tableC
SELECT * 
FROM tableA
    INNER JOIN tableB
        ON tableA.field IS NOT tableB.field

This SQL just selects everything in tableA, even entries that are in tableB.

Any ideas where i'm going wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

長街聽風 2024-07-31 23:13:24

如果你尝试这个会怎样?

INSERT INTO tableC 
SELECT * 
FROM tableA 
WHERE tableA.field NOT IN (SELECT tableB.field FROM tableB)

或者您可以尝试替代的 EXISTS 语法

INSERT INTO tableC 
SELECT * 
FROM tableA 
WHERE NOT EXISTS (SELECT * FROM tableB WHERE tableB.field = tableA.field)

What if you try this?

INSERT INTO tableC 
SELECT * 
FROM tableA 
WHERE tableA.field NOT IN (SELECT tableB.field FROM tableB)

Or you can try the alternate EXISTS syntax

INSERT INTO tableC 
SELECT * 
FROM tableA 
WHERE NOT EXISTS (SELECT * FROM tableB WHERE tableB.field = tableA.field)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文