mysql - INSERT INTO SELECT 如何以正确的顺序插入?
问题描述
我有简单的查询:
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
ETC ...
如何以正确的顺序进行?
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
test.id 应该插入四个 ID 中的哪个?你有 4 个而不是 1 个结果。在 Paul 的示例中,没有重复值(“a”、“b”、“c”)都是不同的,并且没有一个重复。将 Paul 的示例更改为 ('a', 'a','a','b','b','c','c','c','c') ......这更像你的数据。
推荐阅读
- node.js - 我想读取配置文件
- reactjs - TypeScript - React Context 使用者不会重新渲染主要组件
- c# - 如何通过域名搜索 Active Directory 用户?
- python-3.x - 如何在 python 3 中生成确定性的伪随机数批次?
- angular - 如何将带有图像的 HTML 转换为 PDF
- python - python中的Numba jit警告解释
- liquibase - Liquibase 多个 includeAll 语句
- pandas - 如何用现有列值替换 DataFrame 列的 NaN 值?
- cmd - 如何将文件中的一些文本保存到cmd中的变量?
- javascript - 在 FlaskSocketIO 聊天中设置动态聊天室