簡體   English   中英

MySQL INSERT INTO 語句生成“錯誤代碼:1136。列計數與行的值計數不匹配”

[英]MySQL INSERT INTO statement generating “Error Code: 1136. Column count doesn't match value count at row”

我正在嘗試從舊表創建一個新表,以便刪除一些重復項並實現復合主鍵。 我使用 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));

我為 VALUES 添加了雙括號,因為沒有它我會得到錯誤代碼 1064,但我不完全理解為什么需要雙括號。 我按 pkey 字段分組(目前有一些我想刪除的重復項),這意味着我需要總結其余的字段。 正如您從屏幕截圖中看到的那樣,SELECT 語句本身運行良好。

有沒有另一種方法可以做到這一點,我可以嘗試? 或者有沒有更簡單的方法可以直接從原始表中刪除重復項?
我正在使用 MySQL 5.7.14

任何幫助,將不勝感激!

您只是使用SELECT語句INSERT語法錯誤:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM