INSERT INTO SELECT如何以正确的顺序插入?

时间:2019-10-18 13:47:18

标签: mysql insert

我有一个简单的查询:

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

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

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

我得到如下结果:

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

1 个答案:

答案 0 :(得分:0)

@barpas无法实现所需的内容,因为word.word列不是唯一的。例如,假设单词“ Apple”在您的单词表中出现了4次,如下所示:

uint8_t msg1[] = {0x0, 0x0, 0xE9, 0x0, 0x0, 0x0, 0x0, 0x0}; // Volume Up
input->setValue(msg1, sizeof(msg1));
input->notify();

uint8_t msg2[] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
input->setValue(msg2, sizeof(msg2));
input->notify();

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

相关问题