mysql - 如何将 UPDATE WHERE IF @@ROWCOUNT == 0 查询从 MS SQL 转换为 MySQL?

标签 mysql sql sql-server

我有以下形式的查询:

UPDATE TableName SET some="1", fields="two" 
WHERE some_condition="true" 
IF @@ROWCOUNT=0 INSERT INTO TableName(some, fields) VALUES ("1", "two");

此查询是用 MS SQL 编写的,但我想将其转换为 MySQL。我查了几个 refs 说用 ROW_COUNT() 替换 @@ROWCOUNT|但我不知道该怎么做。

关于如何将此类查询从 MS SQL 转换为 MySQL 的任何想法?

最佳答案

一种更优雅的处理方式是……

IF EXISTS(SELECT 1 FROM TableName WITH (UPDLOCK, HOLDLOCK) 
          WHERE some_condition= "true" )
   BEGIN
        UPDATE TableName 
           SET some    = "1"
             , fields = "two" 
        WHERE some_condition= "true" ;
   END
ELSE
   BEGIN
      INSERT INTO TableName(some, fields) VALUES ("1", "two");
   END

关于mysql - 如何将 UPDATE WHERE IF @@ROWCOUNT == 0 查询从 MS SQL 转换为 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31526267/

相关文章:

mysql - 获取数据组中的最小最大值

sql - 使用 row_number() 时是否可以依赖输出顺序

sql-server - 将 WHERE 与 Group By 一起使用并具有

sql - rowversion/timestamp 是否会显着影响性能?

c# - 变量名 '@' 已经声明。变量名称在查询批处理或存储过程中必须是唯一的

mysql - 如何更新 AWS RDS MySQL 实例中的 --thread_stack 值?

php - 灵活的 PHP/MySQL 分页

mysql - 如何在计算字段上优化 GROUP BY(以使用索引)?

sql - 如何优化具有多个相似条件的查询

sql - MySQL 选择帮助