Ошибка при выполнении вложенного запроса UPDATE сервера SQL - PullRequest
0 голосов
/ 12 января 2012

Я пытался найти ответ на форуме, но не смог найти ничего, что могло бы мне помочь.

Моя ситуация такова, что у меня есть 2 таблицы, и электронная почта в одной таблице должна быть обновлена ​​относительно идентификаторов из другой таблицы.

Моя проблема в том, что я пытаюсь выполнить запрос на обновление и получаю эту ошибку:

Сообщение 512, Уровень 16, Состояние 1, Строка 1 Подзапрос возвратил более 1 значение. Это не разрешено, если подзапрос следует =,! =, <, <=, </p>

,> = или когда подзапрос используется в качестве выражения.

Я понимаю, почему я получаю эту ошибку, но я не могу упростить свой запрос. Может ли any1 помочь?

UPDATE A
SET    Email = (SELECT B.[Email Address]
                FROM   B
                WHERE  B.ID IN (SELECT ID
                                FROM   A
                                WHERE  Email LIKE 'abc@def.ghi'))
WHERE  A.ID IN (SELECT ID
                FROM   A
                WHERE  Email LIKE 'abc@def.ghi')  

Может ли кто-нибудь подсказать мне, как поступить?

Ответы [ 2 ]

1 голос
/ 12 января 2012

Если я правильно понял, я думаю, вы могли бы что-то вроде ниже:

 UPDATE AAlias
 SET
    Email = AAlias.EmailAdd
 FROM
     A AAlias
 INNER JOIN B AAlias
     ON AAlias.ID = BAlias.ID AND A.Email LIKE 'BLAH BLAH'

Надеюсь, это поможет !!

1 голос
/ 12 января 2012

Не совсем уверен, какая у вас структура таблицы и что именно вы хотите достичь.

Если я правильно угадаю, вы можете попробовать что-то вроде этого:

UPDATE A SET Email = (SELECT [Email Address] FROM B WHERE B.ID = A.ID)
WHERE Email = 'abc@def.ghi';

Это то, чтоВы хотели (то есть, чтобы поле электронной почты А было равно [адресу электронной почты] В от В, которое совпадает с идентификатором А)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...