Mysql表(migration_terms)字段如下
oldterm count newterm seed
Run Code Online (Sandbox Code Playgroud)
我使用了以下create table语句.
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
Run Code Online (Sandbox Code Playgroud)
它有效,没有问题.
但是当我用下面的insert into语句来填充它时;
"INSERT INTO migration_terms
SELECT looseterm as oldterm,
COUNT(seed) AS count
FROM looseterms
GROUP BY looseterm
ORDER BY count DESC "
Run Code Online (Sandbox Code Playgroud)
我收到这个错误;
Column count doesn't match value count at row 1
Run Code Online (Sandbox Code Playgroud)
我想不通为什么?
如果需要looseterms表的表结构,则它由以下create table语句创建.
CREATE TABLE looseterms
(
`seed` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`looseterm` varchar(255)
)
Run Code Online (Sandbox Code Playgroud)
如果select语句的列数少于表,则需要指定列
"INSERT INTO migration_terms
(oldterm,
count)
SELECT looseterm AS oldterm,
Count(seed) AS count
FROM looseterms
GROUP BY looseterm
ORDER BY count DESC "
Run Code Online (Sandbox Code Playgroud)
如果没有为INSERT ... VALUES或INSERT ... SELECT指定列名列表,则表中每列的值必须由VALUES列表或SELECT语句提供.如果您不知道表中列的顺序,请使用DESCRIBE tbl_name查找.
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |