Получил 2 таблицы/сущности, очень простой сценарий.MySQL: подсчет записей из одной таблицы, а затем обновление другой
Таблица поэты - Столбцы: идентификатор, поэт, нация
Таблица страны - Рубрики: идентификатор, нация, сосчитать
В основном народы к поэтов есть отображение одного для многих, естественно. Например, есть 1000 поэтов из 60 стран. Каждый поэт в поэтов присваивается нации национальным полом, в котором содержится идентификатор одной из наций в народах.
Отсчет поле народов содержит ряд поэтов в поэтов из этой страны.
Мой вопрос заключается в том, как использовать только один SQL-запрос, чтобы подсчитать количество поэтов нации в поэтах, а затем обновить соответствующий счет этой нации?
Я пробовал:
UPDATE poets, nations SET nations.count = COUNT(poets.id) GROUP BY poets.nation HAVING poets.nation = nations.id
Но это дает # 1064 ошибку. Также попытался объединить предложение WHERE где-то, но он все еще отказывается работать.
Любая идея?
Спасибо, что работает трюк! –
обратите внимание, что для очень больших таблиц (500000+ записей) это может быть очень медленным. – dusoft
Кроме того, если country.count не имеет значения NULL, это может привести к предупреждению. Используйте IFNULL для защиты от этого. UPDATE countries SET count = IFNULL ((SELECT COUNT (id) FROM poets WHERE poets.nation = countries.id GROUP BY id), 0); –