mysql - INSERT INTO SELECT 如何按正确顺序插入?

标签 mysql insert

我有一个简单的查询:

INSERT INTO test(id) SELECT rowid FROM words ORDER BY word

TABLE 测试有两个字段 'nr' 和 'id' - 'nr' 是 auto_increment

我希望按照“ORDER BY”指定的顺序添加记录,但它们是按 rowid 排序的...

我得到的结果如下:

nr id    
1  1
2  2
3  3

等等...

如何以正确的顺序进行操作?

CREATE TABLE `words` (
    `rowid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `word` VARCHAR(64) NULL DEFAULT NULL COLLATE 'utf8_polish_ci',
    `display` VARCHAR(64) NULL DEFAULT NULL COLLATE 'utf8_polish_ci',
    `difficult` TINYINT(4) UNSIGNED NULL DEFAULT NULL,
    `islocked` BIT(1) NULL DEFAULT NULL,
    `valid` BIT(1) NULL DEFAULT NULL,
    PRIMARY KEY (`rowid`),
    INDEX `word` (`word`),
    INDEX `display` (`display`)
)
COLLATE='utf8_polish_ci'
ENGINE=InnoDB
ROW_FORMAT=DYNAMIC
AUTO_INCREMENT=57009

最佳答案

@barpas 这是不可能实现你想要的,因为你的words.word列不是唯一的。例如,假设单词“Apple”在单词表中出现了 4 次,如下所示:

"rowid"  "word"
10     Apple
94     Apple
130    Apple
526    Apple

这四个 ID 中的哪一个应该插入到 test.id 中?结果不是 1 个,而是 4 个。在 Paul 的示例中,没有重复值(“a”、“b”、“c”)都是不同的,并且没有一个重复。将 Paul 的示例更改为 ('a', 'a','a','b','b','c','c','c','c') ......这更像是您的数据。

关于mysql - INSERT INTO SELECT 如何按正确顺序插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58452192/

相关文章:

Mysql存储过程if语法

Java PreparedStatement Wilcard 不起作用

php - WordPress : Sql select posts with all related meta

mysql - MySQL THEN 触发器中的语法错误

选择时 PHP MySQL 语法错误

PHP 插入数字不起作用?

mysql - 如何在一个mysql查询中选择多个外键

php - 简单的 HTML DOM 解析器(在其他元素之后插入文本/元素)

sql-server - 错误后继续执行INSERT,SQL

PHP MySQL : User selects the fields to create mysql query array variable