如何在SQL中更新与SELECT查询匹配的所有记录?

时间:2018-01-16 17:31:41

标签: mysql

我需要将2017年2月特定表格中所有记录的 post_status 字段更改为 wc-pending

我已经想出如何选择所有这些记录:

  grep -E -o "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b|first_name.{0,40}|[(]?[2-9]{1}[0-9]{2}[)-. ]?[2-9]{1}[0-9]{2}[-. ]?[0-9]{4}" file.txt | awk -v ORS= '
  NR>1 && !/,/ {print "\n"}
  {print}
  END {if (NR) print "\n"}' | sed -e :a -e '$!N;s/\n[0-9]{3}/,/;ta' -e 'P;D' | sed '$!N;s/\n\s*[0-9]//;P;D'

认为这会改变我需要的字段:

SELECT * FROM `wp_posts` WHERE `post_title` LIKE '%FEB%2017%'

但我很难理解如何将这两者放在一起更新post_status字段,仅用于那些与SELECT查询匹配的记录。

我的预感是,如果我在该表中执行它,以下可能会这样做

SET post_status='wc-pending'

这看起来是否正确? 任何指导表示赞赏。我是SQL新手。谢谢!

1 个答案:

答案 0 :(得分:1)

你的预感是正确的。

UPDATE wp_posts SET post_status='wc-pending' WHERE `post_title` LIKE '%FEB%2017%'

你甚至可以做更复杂的事情,比如添加一些内连接。顺便说一下,phpmyadmin中有一种方法可以模拟查询,看看结果如何。