【问题标题】:MYSQL Update from a select subquery来自选择子查询的 MYSQL 更新
【发布时间】:2015-08-15 06:04:04
【问题描述】:

响应列中的数据是 = blahblahblahTYPE=ERRORblahblah。然后我运行下面的查询以仅针对“错误”字符串。

SELECT substr(Response, instr(Response, 'ERROR'), 5) 
  FROM table 
  WHERE id = 721451 
    AND Status = 'false' 
    AND Response LIKE '%<status>Unknown</status>%' 
    AND date >= curdate();

上面的查询返回:ERROR

我基本上想在不编辑其余数据的情况下将ERROR 更新为SUCCESS

下面的查询会起作用吗?有没有更好的方法来做到这一点?

UPDATE table 
  SET Response = 'SUCCESS' 
  WHERE (
    SELECT substr(Response, instr(Response, 'ERROR'), 5) 
      FROM table 
      WHERE id = 721451 
        AND Status = 'false' 
        AND Response LIKE '%<status>Unknown</status>%' 
        AND date >= curdate()
  );

提前感谢您的帮助!

【问题讨论】:

  • @ReggieB 感谢您格式化我的问题!这是我发布的第一个问题,对此我还是有点陌生​​...
  • 那个suqbery="ERROR"
  • @darshan-patel 也值得称赞。

标签: mysql sql-update subquery substr sql-subselect


【解决方案1】:
UPDATE table 
  SET Response = REPLACE(Response, 'ERROR', 'SUCCESS')
   WHERE id = 721451 
     AND Status = 'false' 
     AND Response LIKE '%<status>Unknown</status>%' 
     AND date >= curdate();

参考https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace

【讨论】:

  • 这看起来比我的更好 - 所以我删除了我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多