SQL从一个表中选择记录并将其用作另一个表的输入以删除记录

时间:2011-09-22 15:53:19

标签: sql sybase sql-delete

我的table1包含列:

def_id, def_name, username etc

我有另一个表table2,它有一些关联:

assoc_id,parent_id,child_id

parent_id,child_id实际上是来自Table1的def_id。它们根据GUI中的parent_child关系用户操作插入到Table2中。

现在我想从Table1中为特定用户名选择所有def_id,然后使用该输入删除所有记录,如果这些def_ids是Table2中parent_id或child_id的一部分。

我如何在SQL中执行此操作?我正在使用Sybase数据库。

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:2)

 Delete Table2
 Where parent_id In
     (Select def_id from table1
      Where username = @username) Or
     child_id In
     (Select def_id from table1
      Where username = @username)

或者

  Delete t2
  From table2 t2
  Where Exists
     (Select * From Table1
      Where def_id In 
          (t2.parent_Id, t2.child_Id))

答案 1 :(得分:0)

一种简单的方法是在where子句中添加子查询。

DELETE ab
FROM AuthorArticle AS ab
WHERE ab.AuthID=(SELECT AuthID FROM Authors WHERE AuthorLastName='Yin')

从未使用过Sybase,但这是基本的SQL,应该可以使用。

答案 2 :(得分:0)

尝试:

DELETE table2
FROM table2
INNER JOIN table1 ON table1.def_id IN (table2.parent_id, table2.child_id)