【问题标题】:If exists update else insert in one query [duplicate]如果存在更新,则在一个查询中插入 [重复]
【发布时间】:2013-04-29 02:29:06
【问题描述】:

我有这样的简单表格:

+----------+---------------+-------------+
| ID (int) | KEY (varchar) | VALUE (int) |
+----------+---------------+-------------+
|        1 | asdf          |         100 |
|        2 | fdsa          |         321 |
|        3 | ecda          |         211 |
+----------+---------------+-------------+

我想更新KEY = 'something' 所在的行,但如果KEY = 'something' 所在的行没有我想INSERT 新行:

+----------+---------------+-------------+
| ID (int) | KEY (varchar) | VALUE (int) |
+----------+---------------+-------------+
|        1 | asdf          |         100 |
|        2 | fdsa          |         321 |
|        3 | ecda          |         211 |
|        4 | something     |         200 |
+----------+---------------+-------------+

只有一个查询有可能吗?

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    是的,这很简单。

    这就是你要找的:

    IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue')
        UPDATE Table1 SET (...) WHERE Column1='SomeValue'
    ELSE
        INSERT INTO Table1 VALUES (...)
    

    【讨论】:

      【解决方案2】:

      您可以使用ON DUPLICATE KEY UPDATE

      INSERT INTO yourtable (`id`, `key`, `value`) VALUES (4, 'something', 200)
      ON DUPLICATE KEY UPDATE `value` = 200; 
      

      key 列上应该有唯一索引

      SQLFiddle

      【讨论】:

      • 不客气。很高兴它有帮助。
      猜你喜欢
      • 2019-10-17
      • 2012-12-13
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 2014-11-29
      相关资源
      最近更新 更多