Оператор MySQL INSERT INTO, генерирующий «Код ошибки: 1136. Число столбцов не соответствует значению в строке» - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь создать новую таблицу из старой таблицы, чтобы я мог удалить некоторые дубликаты и реализовать составной первичный ключ.Я создал новую таблицу из старой, используя LIKE, поэтому столбцы должны быть идентичны.

Почему это не работает?

INSERT INTO PricesNEWtest (Global_MarketCap,pkey)
   VALUES ((SELECT max(Global_MarketCap), pkey
   FROM Prices GROUP BY pkey));

Произошла ошибка:

Код ошибки: 1136. Количество столбцов не соответствует значению в строке 1

В приведенном выше примере есть только две строки, поэтому он более читабелен, но на самом деле таблицы содержат 15 столбцов, это полный оператор INSERT INTO, который генерирует ту же ошибку:

INSERT INTO PricesNEWtest (Global_MarketCap,Global_Volume24h,BTC_Dominance,Rank,Name,
Symbol,ChangePerc24h,Price,BTC_Price,MarketCap,Volume24h,DateTime,Date,pkDummy,pkey)
VALUES ((SELECT max(Global_MarketCap), max(Global_Volume24h), max(BTC_Dominance), max(Rank), max(Name),
    max(Symbol), max(ChangePerc24h), max(Price), max(BTC_Price), max(MarketCap), max(Volume24h),
    max(DateTime), max(Date), max(pkDummy), pkey
    FROM Prices GROUP BY pkey));

Я добавил двойные скобки дляЦЕННОСТИ потому что без него я получаю код ошибки 1064, но я не до конца понимаю, зачем нужны двойные скобки.Я группируюсь по полю pkey (в котором в настоящее время есть несколько дубликатов, которые я хочу удалить), что означает, что мне нужно суммировать остальные поля.Оператор SELECT прекрасно работает сам по себе, как вы можете видеть на скриншоте.Есть ли другой способ сделать это, что я мог бы попробовать?Или есть более простой способ удалить дубликаты прямо из исходной таблицы?Я использую MySQL 5.7.14

Буду признателен за любую помощь!

1 Ответ

0 голосов
/ 18 декабря 2018

У вас просто неправильный синтаксис для INSERT с оператором SELECT:

INSERT INTO PricesNEWtest (Global_MarketCap, pkey)
SELECT max(Global_MarketCap), pkey
FROM Prices 
GROUP BY pkey
...