【问题标题】:sql delete result from querysql删除查询结果
【发布时间】:2012-10-21 11:57:43
【问题描述】:

我有两张表,结构相同

  • clients 包含第 1+2 行
  • clients3 仅第 2 行

我想删除 clients 表中的第 2 行

 SELECT * 
 FROM clients 
 WHERE EXISTS (SELECT * FROM clients3 WHERE clients3.id = clients.id))

给我第 2 行。但我不知道如何删除。

DELETE * 
FROM clients 
WHERE (SELECT * 
       FROM clients 
       WHERE EXISTS (SELECT * FROM clients3 WHERE clients3.id = clients.id))

不起作用。

【问题讨论】:

  • delete * from...查询中删除*,然后尝试

标签: sql sql-server sql-delete


【解决方案1】:

您需要为子查询创建临时表,

DELETE 
FROM clients 
WHERE ID IN 
(
    SELECT ID
    FROM
    (
        SELECT ID FROM clients WHERE EXISTS (SELECT * FROM clients3 WHERE clients3.id = clients.id)
    ) x
)

【讨论】:

    【解决方案2】:

    无需在查询中两次引用clients 表并从DELETE 子句中删除* -

    DELETE c1
    FROM clients c1
    INNER JOIN clients3 c3 ON c3.id = c1.id --INNER JOIN will work as EXISTS for 1-1 Relation
    

    【讨论】:

      【解决方案3】:

      试试这个

         Delete from clients where id  in(select clients3.id from clients3)
      

      【讨论】:

        猜你喜欢
        • 2019-01-01
        • 2014-10-15
        • 2021-04-01
        • 2021-04-11
        • 2014-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多