Я пытаюсь изменить некоторые записи в моей базе данных, но, к сожалению, мои знания SQL немного ограничены.После поиска в Google и чтения материалов в Интернете мне удалось написать оператор выбора, в котором я могу найти записи, которые хочу обновить, но я не понимаю логику написания оператора обновления для этого.Я должен сделать несколько похожих утверждений об обновлении, поэтому я надеюсь, что в этом я сам смогу разобраться с остальными
Это утверждение select у меня есть:
SELECT
MG.id,
MG.status,
MG.fin,
MG.execDateTime,
EXISTS
(
SELECT 1
FROM Mtask T
JOIN MTaskHis TH ON TH.t_id= T.id
WHERE T.tg_id = MG.id
AND YEAR(TH.dateTime) = 2019
) AS hasExecStart,
NMG.id,
NMG.execDateTime,
EXISTS
(
SELECT 1
FROM Mtask T
JOIN MTaskHis TH ON TH.t_id = T.id
WHERE T.tg_id = NMG.id
AND YEAR(TH.dateTime) = 2019
) AS hasExecNext
FROM Management_Group MG
JOIN MT_Groupman MTGM ON
MG.tgm_id = MTGM.id
LEFT JOIN Management_Group NMG ON MTGM.id =
NMG.tgm_id AND YEAR(NMG.execDateTime) = 2019
JOIN Management_Man MM ON MTGM.man_id = MM.id
JOIN Location L ON MM.location_id = L.id
WHERE L.org_id = 69
AND MG.stat != 'DELETED'
AND YEAR(MG.execDateTime) = 2018
AND MM.Type= 9
AND MG.fin != 1
AND EXISTS
(
SELECT 1
FROM Mtask T
WHERE T.tg_id = MG.id
AND T.stat = 'execution'
)
HAVING hasExecNext = 0 AND hasExecStart = 1
Я знаю стандартные обновления в sql:
UPDATE <TABLENAME>
SET <fieldName> = <value>
WHERE <conditons>
За исключением того, что я не знаю, как преобразовать этот оператор выбора, который я сделал, в оператор обновления, причина этого: - Где я могу поместить псевдоним существующего в оператор обновления - я также не понимаюкогда или куда помещать все СОЕДИНЕНИЯ в операторе from - А как насчет HAVING
Каков наилучший способ сделать объединенные обновления, подобные этому?