Итак, я прочитал здесь несколько сообщений, но, похоже, я не могу заставить это работать с MySQL.
В значительной степени у меня есть «количество» записей с идентификатором элемента, который я хочу обновить в своей таблице [items] на основе идентификатора элемента в [items]. [Популярность].
Вот что я пробовал:
Update items
SET items.popularity = countitems.countofscriptiD
FROM items
INNER JOIN
(SELECT Count(scripts.ScriptID) AS CountOfScriptID, scripts.ItemID
FROM scripts GROUP BY scripts.ItemID) as countitems
ON
items.itemid = countitems.itemid
Что возвращает ошибку MySQL:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use
near 'FROM items INNER JOIN (SELECT Count(scripts.ScriptID) AS CountOfScriptID, scri' at line 3
Если я изменю это на запрос SELECT, он будет работать нормально, либо выбор из [items], либо запрос счетчика, однако оператор обновления не работает!
Любой совет был бы отличным, из того, что я прочитал, я не вижу, где я ошибаюсь.





Правильный способ сделать это - объединить таблицы перед SET:
UPDATE items
INNER JOIN
(SELECT Count(scripts.ScriptID) AS CountOfScriptID, scripts.ItemID
FROM scripts GROUP BY scripts.ItemID) as countitems
ON
items.itemid = countitems.itemid
SET items.popularity = countitems.countofscriptiD