MySQL热门搜索查询,如果搜索已经存在,如何添加到计数而不是插入新?

标签 mysql sql if-statement

引用网址:jobs.sitesixteen

我目前有一个在每次执行职位搜索时运行的查询,该查询将该职位搜索添加到 searchs_performed 表中。这插入得很好:

INSERT INTO `searches_performed`
            (`state`,
             `city`,
             `distance`,
             `term`,
             `description`,
             `telecommute`)
VALUES      ( 'NY',
              'New York',
              '100',
              'web design',
              '1',
              '1' ) 

此表中还有一个“计数”列,默认值为 1。

我的目标是——无需 Php 和多个查询的帮助——检查我打算插入的搜索是否存在,如果不存在,则添加它。如果我打算插入的搜索确实存在,我只想在该行的“计数”列中添加 1。

一如既往,我们非常感谢任何帮助。

最佳答案

您可以使用:INSERT ... ON DUPLICATE KEY UPDATE

即:在搜索字段上定义主键,然后使用

INSERT INTO `searches_performed`
            (`state`,
             `city`,
             `distance`,
             `term`,
             `description`,
             `telecommute`)
VALUES      ( 'NY',
              'New York',
              '100',
              'web design',
              '1',
              '1' ) 
ON DUPLICATE KEY UPDATE counts=counts+1;

关于MySQL热门搜索查询,如果搜索已经存在,如何添加到计数而不是插入新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4702173/

相关文章:

php - 表关系问题 - 从第二个表收集信息

MySQL : Get max values of groups

MySQL 按多个日期和结果分组总计

python - 如果匹配元组的整个项目,我该如何制作

javascript - 每次使用 onClick 事件时如何防止变量返回原始值

javascript - 表单验证和数组,如何收缩多个 if 和 else 语句?

mysql - qt5.1.1 mysql ubuntu QMYSQL驱动未加载

PHP - MYSQL - 如果用户名存在,检查特定用户名的密码

sql - "IN"查询中值的数量限制

javascript - 无法将标记加载到 LeafLet 中