Как обновить столбец из TOP 1 другой таблицы с определенными критериями - PullRequest
1 голос
/ 25 апреля 2019

Я хочу обновить таблицу с критериями соответствия из другой таблицы. В другой таблице есть несколько записей, так что просто нужно получить первую 1 из соответствующего ключа. Это то, что я пробовал до сих пор:

 UPDATE checkList 
 SET checkList.Answer = A.Answer,
    checkList.Response = A.Response,
    checkList.ANmbr = A.DisplayOrder
 FROM checkList  INNER JOIN  (SELECT TOP 1 QuestID, Answer, Response, DisplayOrder FROM TabAnswers WHERE QuestID = checkList.QID ORDER BY DisplayOrder) A
 ON A.QuestID = checkList.QID    
 WHERE checkList.auditid='158478' and checkList.Qtype = '0'

Не выбираются правильные данные из таблицы TabAnswers. TabAnswers имеет несколько ответов на один и тот же вопрос, и ему просто нужно заполнить первый список в контрольном списке. Я нашел этот ответ, но он выбирает первый из таблицы, а не соответствующий Криетрии Как обновить столбец, приходящий из ТОП 1 другой таблицы

1 Ответ

2 голосов
/ 25 апреля 2019

Если вы ссылаетесь на столбец вне подзапроса, вам нужно использовать CROSS APPLY вместо INNER JOIN (или OUTER APPLY вместо LEFT OUTER JOIN).

Также важно всегда указывать квалификациюваши столбцы внутри подзапроса.

UPDATE c 
 SET c.Answer = A.Answer,
     c.Response = A.Response,
     c.ANmbr = A.DisplayOrder
 FROM checkList  c
 CROSS APPLY (SELECT TOP 1 ta.QuestID, ta.Answer, ta.Response, ta.DisplayOrder FROM TabAnswers ta WHERE ta.QuestID = c.QID ORDER BY DisplayOrder) A
 WHERE c.auditid='158478' and c.Qtype = '0'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...