2012-05-05 5 views
1

MySQLのテーブル(migration_terms)フィールド列カウントを引き起こしているこのSQLステートメントで何が問題なのですが、行1の値カウントと一致しませんか?

oldterm count newterm seed 

Iが表なステートメントを作成するには、次を使用し、以下の通りです。

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

を持っているのに対し、あなたの挿入は、データの2列を追加して〜からMySql docs on Insert Syntax

INSERTの列名の一覧を指定しない場合... VALUESまたは INSERT ... SELECTの場合、表の各列の値は、VALUESリストまたはSELECT文で指定された でなければなりません。 の表の列の順序を知っていない場合は、DESCRIBE tbl_nameを に検索してください。

4

あなたの表の定義は、SELECT文がテーブル

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

より少ない列を持っている場合は、列を指定する必要が4列

関連する問題