mysql insert into语句生成“错误代码:1136列计数与第行的值计数不匹配“

svmlkihl  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(239)

我正在尝试从一个旧表创建一个新表,以便删除一些重复项并实现一个复合主键。我使用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语句本身运行良好。

有没有别的方法可以让我试试?或者有更简单的方法直接从原始表中删除重复项吗?
我正在使用MySQL5.7.14
任何帮助都将不胜感激!

zysjyyx4

zysjyyx41#

你只是语法不对 INSERT 用一个 SELECT 声明:

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

相关问题