2014-01-27 2 views
-1

Table1: StudentID, StudentNameУдалить одинаковые строки в двух таблицах

Table2: DetailsID, StudentID, Gender, Age

Я хочу удалить StudentID в table1 так, что все строки, которые принадлежат StudentID удалить из table2 ...

+0

Какие технологии вы используете для своего уровня данных. Я бы также предложил добавить StudentID в таблицу 2 в качестве вашего внешнего ключа. –

+1

Что делать, если у двух учеников одно имя? Вы должны использовать идентификатор студента, который уникален для идентификации пользователя, который нужно удалить. – Shoban

+3

Используйте ссылочную целостность с удалением каскада. –

ответ

0

Вам нужен следующий код SQL?

delete from table1 
where exists (
    select * from table2 where table2.StudentName = Table1.StudentName 
) 
+0

Это приведет к удалению каждой записи из таблицы 1 с соответствующим элементом в таблице 2. SO, возможно, она удалит все в таблице 1 и ничего в таблице2 или я ошибаюсь? – Dannydust

+0

Я использую это: SqlCommand com = новый SqlCommand («удалить из таблицы1, где существует (выберите * из таблицы2.StudentName = table1.StudentName)», con), но это ошибка: неправильный синтаксис рядом с '='. – mhshojaee

+0

@mhshojaee: Вы должны написать это следующим образом: Выберите * из таблицы2 t2 присоедините таблицу1 t1 к t2.StudentName = t1.StudentName – Dannydust

2

Вы должен изменить вашу таблицу2, чтобы удалить на каскаде с помощью внешнего ключа Contraint, и вы не должны использовать имя студента там, где раньше были Shoban, Hamlet Hakobyan и Peter Smith statet.

ALTER TABLE Table2 WITH CHECK 
ADD CONSTRAINT [FK_Table2_Table1] FOREIGN KEY([StudentID]) 
REFERENCES [dbo].[Table1] ([StudentID]) 
ON DELETE CASCADE 

Затем, когда вы удаляете ученика в таблице 1, строки с тем же StudentId в таблице2 автоматически удаляются.

В Таблице 2 вам не нужно имя студента, если набрано правильно заполнено StudentId, вы можете удалить столбец StudentName в таблице2, поскольку он существует уже в таблице1.

ALTER Table Table1 drop column StudentName 
Смежные вопросы