SQL выбирает записи из одной таблицы и использует их в качестве входных данных для другой таблицы, чтобы удалить записи - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть table1 со столбцами:

def_id, def_name, username etc

У меня есть другая таблица table2, которая имеет некоторую связь:

assoc_id,parent_id,child_id

На самом деле parent_id, child_id - это def_id из Table1.Они вставляются в Таблицу 2 на основе действий пользователя отношения parent_child в графическом интерфейсе.

Теперь я хочу выбрать все def_id для определенного имени пользователя из Таблицы1, а затем использовать этот ввод для удаления всех записей, если эти def_ids являются частьюparent_id или child_id из таблицы 2.

Как мне это сделать в SQL?Я использую базу данных Sybase.

Любая помощь будет оценена

Ответы [ 3 ]

2 голосов
/ 22 сентября 2011
 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 голосов
/ 22 сентября 2011

Попробуйте:

DELETE table2
FROM table2
INNER JOIN table1 ON table1.def_id IN (table2.parent_id, table2.child_id)
0 голосов
/ 22 сентября 2011

Простой способ - добавить подзапрос к предложению where.

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

Никогда не использовал Sybase, но это базовый SQL и он должен работать.

...