我有一个名为words
的表格,其中我想存储单词的键/值对及其出现次数。
我想让count
列成为一个自动递增列,因为我想继续添加单词(来自C ++应用程序)并自动增加count
。但是,我认为该表会被搜索很多,所以我将word
作为主键。我遇到了一个错误,说我不能将非主键设置为自动递增列。
有没有办法正确地执行此操作,以便我可以插入到表中并使数据库句柄递增以及所有这些?
答案 0 :(得分:0)
您可以将自动增量列保留为主键,并添加仅包含word
列的其他索引。如果您按字词搜索,则会使用此索引
答案 1 :(得分:0)
创建一个表来存储单词。 word
列是主键。
CREATE TABLE `words` (
`word` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`count` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`word`)
);
然后在表格中插入您的文字:
INSERT INTO `words`(word) VALUES('car') ON DUPLICATE KEY UPDATE `count`=`count`+1;
INSERT INTO `words`(word) VALUES('plane') ON DUPLICATE KEY UPDATE `count`=`count`+1;
INSERT INTO `words`(word) VALUES('car') ON DUPLICATE KEY UPDATE `count`=`count`+1;
如果表格中不存在该词,nb
默认为1
(这在表格定义中)。
如果表中已存在该单词,则此单词的nb
值将增加1.
在上面的3个插入之后,该表包含:
word | count
car | 2
plane | 1
您可能需要调整:
- 列word
的长度
- 字符集和整理