2011-09-22 77 views
0

我有一个栏目表1:SQL从一个表中选择记录,并以此作为输入到另一个表中删除记录

def_id, def_name, username etc 

我有有一些关联的另一表表2:

assoc_id,parent_id,child_id 

parent_id,child_id实际上是来自Table1的def_id。它们基于GUI中的parent_child关系用户操作被插入到表2中。

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

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

任何帮助将不胜感激

回答

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)) 
+0

感谢所有的答复。真的非常感谢帮助我。查尔斯BRETANA的第一个答案的伎俩对我来说,他建议在下一个查询给了我一个语法错误 SQL Anywhere错误-131:语法错误附近行“去哪儿” 1 感谢 -C – Chandu

+0

您可能需要添加从条款获得第二个工作...我编辑显示... –

0

一个简单的方法是增加一个子查询的WHERE子句。

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

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

0

尝试:

DELETE table2 
FROM table2 
INNER JOIN table1 ON table1.def_id IN (table2.parent_id, table2.child_id) 
相关问题