2012-05-05 30 views
1

MySQL表(migration_terms)字段如下導致列計數的此SQL語句有什麼問題與第1行的值計數不匹配?

oldterm count newterm seed 

我使用了下面的CREATE TABLE statment。

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) 
) 

回答

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 docs on Insert Syntax

如果您未指定INSERT列名稱列表... VALUES或 INSERT ... SELECT,表中每列的值必須是由VALUES列表或SELECT語句提供的 。如果不知道 知道表中列的順序,請使用DESCRIBE tbl_name至 查明。

4

你的插件添加數據的2列,而你的表的定義有4列

相關問題