У меня плохо нормализованный набор таблиц, и я пытаюсь исправить эту проблему.БД - MS SQL 2005.
В Table1 есть поле id
(идентификатор записи), поле mainID
(идентификатор человека) и поле sequence
(и int, определяющий порядок сортировки)
Table2 имеет собственное поле id
и копию идентификатора для первой записи лица (sequence
= 1).
Я добавил новое поле в вызов table2table2_id и я хотел бы заполнить это поле идентификатором из table2, чтобы я мог покончить с table1.mainID
.В table2 есть только запись для одной из записей для каждого человека, а для mainId
задан идентификатор, где table1.sequence = 1
.
Это запрос на обновление, который, как я думал, сработает, если я получаю ошибки
update table1 as a
set regInfoID = (select b.id
from table2 as b
where b.ref1 = (select c.id
from table1 as c
where c.mainID = a.mainID
and sequence = 1))
Мне кажется, я на правильном пути, так как следующий запрос работает нормально
select regInfoID = (select b.id
from table2 as b
where b.ref1 = (select c.id
from table1 as c
where c.mainID = a.mainID
and sequence = 1)), a.*
from table1 as a