使用sql来跟踪单词及其计数

时间:2014-03-09 15:27:18

标签: mysql sql

我有一种情况,即用户一次输入某些单词,比如{bat,ball,tennis,car,actor,ping}。我有一个具有以下结构的数据库

------------------------------
word (PK)    |    count 
------------------------------
   ball      |     4
   cat       |     2
   gear      |     1
             |

我想将每个单词插入表中。如果单词已经存在,则将计数器递增1,否则插入单词(因为它是新的)并将其计数设置为1.

是否可以使用单个查询?如果是,我该怎么办?

2 个答案:

答案 0 :(得分:0)

如果你的单词列确实是主键,你应该可以做这样的事情。

INSERT INTO table_name (`word`, `count`) VALUES("ball", 1) 
    ON DUPLICATE KEY UPDATE `count` = `count` + 1

非常直接利用数据库在数据库层执行更新。

答案 1 :(得分:0)

通常情况下,我避免回答链接的数量,但在这种情况下,我认为这个问题实际上只是一个两部分,之前已经在这里提出过。

您需要执行两个步骤。

  1. 你必须将你的关键词组分成一些风格的表格,最后我知道MySQL没有分裂字符串,但是如何做到这一点已被问过几次SO。请参阅Can Mysql Split a column?

  2. 然后您可以使用INSERT...ON DUPLICATE

  3. 中讨论的"How do I update if exists, insert if not (AKA “upsert” or “merge” in MySQL?"