Ms sql update from select
Автор Headless задал вопрос в разделе Другие языки и технологии
mssql update from select и получил лучший ответ
Ответ от G0 t0[гуру]
В MSSQL обновить данные на основе выборки из другой таблицы можно несколькими способами. Для вашей задачи с подсчетом голосов подойдет скалярный подзапрос с функцией ISNULL, чтобы избежать значений NULL, если совпадений не найдено:UPDATE miss
SET rate = ISNULL((SELECT COUNT(*) FROM senders WHERE voice = miss.number), 0)В таком подзапросе в списке выборки должно быть только одно значение, а конструкции GROUP BY и ORDER BY действительно не нужны. Однако для больших объемов данных в SQL Server предпочтительнее использовать прямой синтаксис UPDATE FROM с JOIN. Это работает быстрее и надежнее:UPDATE m
SET m.rate = ISNULL(s.cnt, 0)
FROM miss m
LEFT JOIN (
SELECT voice, COUNT(*) AS cnt
FROM senders
GROUP BY voice
) s ON m.number = s.voiceИспользование LEFT JOIN гарантирует, что обновятся все записи таблицы miss, даже если у конкурсантки еще нет голосов в таблице senders, а функция ISNULL подставит ноль вместо пустого значения.
только еще isnull можно дописатьUPDATE miss set rate =isnull (( select count(*) from senders wherevoice = miss.number -- voice голос. связана с таблицей miss по номеру конкурсантки),0)
isnull дописать еще можноUPDATE miss set rate =isnull (( select count(*) from senders wherevoice = miss.number -- voice голос. связана с таблицей miss по номеру конкурсантки),0)
Перечень допустимых функций в SQL-запросе ADO Jet 4.0 (MS Access)
Скалярные функции Transact SQL для выражений (ADP)
Примечание. Сведения в данном разделе
подробнее...