删除时如何在存储过程中使用2个表?

时间:2010-12-19 00:01:26

标签: sql sql-server sql-server-2008 stored-procedures

我想在删除存储过程中使用两个表。通常,我可以像这样编写查询:

  

从table_1 x,table_2 y中删除*   其中x.ID = y.ID

但我不能用存储过程(你知道=)

请帮助..

4 个答案:

答案 0 :(得分:0)

DELETE FROM table_1
    FROM table_1 
        INNER JOIN table_2 AS Y
            ON table_1.id = Y.id

答案 1 :(得分:0)

感谢您的所有答案,我可以使用“renegm”和“Sebastian Piu”的评论来做到这一点。 是的,我想删除两个表中的所有行,所以我这样做:

  

USE DB

     

SET ANSI_NULLS ON   GO
  SET QUOTED_IDENTIFIER ON   GO
  ALTER PROCEDURE delUser
  (
      @ID int
  )
  AS
  从表1中删除       从表_1           INNER JOIN表2 AS Y               在表_1.ID = Y.ID
              和Y.ID = @ID
  从表2中删除       表格_2.ID = @ID

它正在工作,但它确实是我不确切知道的解决方案=))

答案 2 :(得分:0)

select distinct ID
into #temp
from table_1
join table_2
on table_1.ID = table_2.ID

delete table_1
where ID in (select * from #temp)

delete table_2
where ID in (select * from #temp)

drop table #temp

最简单+没有混淆

答案 3 :(得分:0)

仅删除表格。

删除的MSDN说明

  

DELETE(Transact-SQL)

     

从表格或视图中删除行。

如果你想在从table1删除时总是从table2删除,你可以使用table1上的触发器。

请参阅此链接:http://forums.devshed.com/showpost.php?p=322160&postcount=5