1

Mysql表(migration_terms)字段如下

oldterm   count    newterm  seed

我使用了以下创建表语句。

CREATE TABLE `migration_terms` 
    ( 
      `oldterm` varchar(255) DEFAULT NULL, 
      `count` smallint(6) DEFAULT '0', 
      `newterm` varchar(255) DEFAULT NULL, 
      `seed` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`seed`) 
    )   ENGINE=InnoDB DEFAULT CHARSET=utf8

它有效,没有问题。

但是当我使用以下insert into语句填充它时;

"INSERT INTO migration_terms 
     SELECT looseterm as oldterm, 
            COUNT(seed) AS count 
            FROM looseterms 
            GROUP BY looseterm 
            ORDER BY count DESC "

我收到此错误;

 Column count doesn't match value count at row 1

我不知道为什么?

如果您需要looseterms 表的表结构,它是由以下create table 语句创建的。

CREATE TABLE looseterms
(
     `seed` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
     `looseterm` varchar(255)
)
4

2 回答 2

8

如果您的 select 语句的列数少于表,则需要指定列

"INSERT INTO migration_terms 
        (oldterm, 
         count) 
SELECT looseterm   AS oldterm, 
       Count(seed) AS count 
FROM   looseterms 
GROUP  BY looseterm 
ORDER  BY count DESC  "

MySql 文档插入语法

如果您没有为 INSERT ... VALUES 或 INSERT ... SELECT 指定列名列表,则表中每一列的值必须由 VALUES 列表或 SELECT 语句提供。如果您不知道表中列的顺序,请使用 DESCRIBE tbl_name 查找。

于 2012-05-05T02:21:21.470 回答
4

您的插入添加了 2 列数据,而表的定义有 4 列

于 2012-05-05T02:21:12.013 回答