【问题标题】:Delete orphan records using Join使用 Join 删除孤立记录
【发布时间】:2016-02-05 22:29:19
【问题描述】:

我得到了 2 张桌子,如下所示。理想情况下,Table2.C1Table1.C1 的外键,但最初并未设置该外键。我们现在无法设置外键,因为 Table2 中存在一些孤立记录,我们希望在应用 alter 语句之前将其删除。

注意:我不想使用任何子/嵌套查询

Table1
--------
| C1   |
--------
| 1    |
| 2    |
| 3    |
| 4    |
|------|

Table2
--------
| C1   |
--------
| 1    |
| 1    |
| 8    |
| 9    |
| 2    |
|------|

我想从表 2 中删除记录 89

【问题讨论】:

    标签: mysql join sql-delete


    【解决方案1】:
    DELETE table2.*
    FROM
    table2
    LEFT OUTER JOIN table1 ON table2.c1 = table1.c1
    WHERE
    table1.c1 IS NULL
    

    【讨论】:

    • 谢谢。这与皮特的回答有何不同。皮特的回答也很好。
    • 我们只是表格的顺序不同,所以我的是右连接,而 Randy 使用左连接
    • 我总是喜欢处理左连接而不是右连接。它们在功能上做同样的事情。
    • 我通常也会这样做。只是为了保持与问题中的顺序相同。
    【解决方案2】:
    DELETE table2.* 
    FROM table1 
    RIGHT JOIN table2 ON table1.c1=table2.c1
    WHERE table1.c1 IS NULL
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      相关资源
      最近更新 更多