ЗМІНИТИ іноді потрібно, оскільки INSERT IGNORE, здається, не працює з перетвореннями даних.
Якщо я це роблю, я встановлюю лише найбільшийCityPop:
ВСТАВІТЬ ІГНОРУВАТИ У найбільші міста (stateID, greatestCityPop, statePop) ВИБЕРІТЬ stateID, MAX (city.pop) як найбільшийCityPop, state.pop ІЗ міста ПРИЄДНАЙТЕСЬ до держави city.stateID = state.ID GROUP BY city.stateID ON DUPLICATE KEY UPDATE greatestCityPop = greatestCityPop
Якщо я це роблю, я неправильно використовую функцію GROUP:
ВСТАВІТЬ ІГНОРУВАТИ У найбільші міста (stateID, greatestCityPop, statePop) ВИБЕРІТЬ stateID, MAX (city.pop) як найбільшийCityPop, state.pop ІЗ міста ПРИЄДНАЙТЕСЬ стан у місто.stateID = state.ID GROUP BY city.stateID ON DUPLICATE KEY UPDATE greatestCityPop = MAX (city.pop)
І якщо я це зроблю, MySQL не розпізнає назву стовпця:
ВСТАВІТЬ ІГНОРУВАТИ У найбільші міста (stateID, greatestCityPop, statePop) ВИБЕРІТЬ stateID, MAX (city.pop) як найбільшийCityPop, state.pop ІЗ міста ПРИЄДНАЙТЕСЬ стан у місто.stateID = state.ID GROUP BY city.stateID ON DUPLICATE KEY UPDATE mostCityPop = city .largestCityPop
Це працює, але здається просто потворним:
ВСТАВІТЬ ІГНОРУВАТИ У найбільші міста (stateID, greatestCityPop, statePop) SELECT * FROM (SELECT stateID, MAX (city.pop) як greatestCityPop, state.pop FROM city JOIN state on city.stateID = state.ID GROUP BY city.stateID) x ON ДУБЛІКУВАТИ КЛЮЧОВЕ ОНОВЛЕННЯ найбільшеCityPop = найбільшеCityPop