我有一个简单的查询:
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/