Идентификатор многочастной части не может быть связан sql
Я получаю multipart не может быть связанной ошибкой при следующем запросе
update nfltx
set
b.boxno = a.boxno,
b.message = a.message,
b.nameboxno = a.nameboxno,
b.namemsg = a.namemsg,
b.phoneboxno = a.phoneboxno,
b.phonemsg = a.phonemsg
FROM ofltx a JOIN nfltx b
ON a.ls_fullnam = b.ls_fullnam
но если я удалю b из сообщения boxno, и все, я не получаю ошибку. В чем причина этого. Спасибо, используя SQL Server 2008
Ответы
Ответ 1
Алиас таблицы, указанный в предложении FROM, не может использоваться в качестве классификатора в SET column_name. Это неверно:
update nfltx
set
b.boxno = a.boxno,
b.message = a.message,
b.nameboxno = a.nameboxno,
b.namemsg = a.namemsg,
b.phoneboxno = a.phoneboxno,
b.phonemsg = a.phonemsg
FROM ofltx a JOIN nfltx b
ON a.ls_fullnam = b.ls_fullnam
Чтобы он работал, удалите b. псевдоним из имени столбца.
update nfltx
set
boxno = a.boxno,
message = a.message,
nameboxno = a.nameboxno,
namemsg = a.namemsg,
phoneboxno = a.phoneboxno,
phonemsg = a.phonemsg
FROM ofltx a JOIN nfltx b
ON a.ls_fullnam = b.ls_fullnam
Раджа
Ответ 2
В чем причина этого?
An UPDATE
(и DELETE
, INSERT
) может влиять на одну и только одну таблицу. Вы уже определили, на какую таблицу вы хотите повлиять:
update nfltx
Следовательно, не имеет смысла разрешать псевдоним для левой стороны назначений в предложении SET
. Они должны быть столбцами, принадлежащими ранее идентифицированной таблице.
Если одна и та же таблица включена в предложение FROM
несколько раз (и это таблица, которую вы хотите обновить), вам нужно будет предоставить псевдоним, указывающий, какой экземпляр таблицы должен быть обновлен, d предоставить его (один раз) в предложении UPDATE
, а не в предложении SET
.
Ответ 3
просто используйте
update b
вместо
update nfltx
Человек, которого вы, ребята, делаете слишком сложно для тех, кто учится.