使用Mysql中的select语句进行更新

时间:2015-05-29 20:21:53

标签: mysql sql sql-update

我正在尝试更新某些产品在数据库中的类别。但我得到一个错误,我不明白我的陈述在哪里错了。请帮忙。我希望找到名称中包含特定字词的产品,之后我会更新此产品的类别。

我想从sho_posts中选择ID,其中sho_posts.post_title包含这部分字词'%Audio CD%'然后用值2更新sho_term_relationships.term_taxonomy_id,其中sho_term_relationships.object_id = sho_posts.id

UPDATE sho_term_relationships 
   SET term_taxonomy_id = 2
 WHERE object_id = (SELECT `id` FROM `1876522_shoping`.`sho_posts` WHERE CONVERT(`post_title` USING utf8) LIKE '%Audio CD%') 

2 个答案:

答案 0 :(得分:0)

在WHERE子句中,要根据子查询结果查找要更新的ID,请使用IN代替=

UPDATE sho_term_relationships 
   SET term_taxonomy_id = 2
   WHERE object_id IN (
      SELECT `id` FROM `1876522_shoping`.`sho_posts` 
      WHERE CONVERT(`post_title` USING utf8) LIKE '%Audio CD%') 

只有在您确定子查询返回单行时才使用=,如果子查询返回多行,它将无法工作。使用IN测试对象id是否包含在子查询结果中。

答案 1 :(得分:0)

你只需要在'中使用'而不是' ='更新多行时。

更新sho_term_relationships    SET term_taxonomy_id = 2  WHERE object_id in (SELECT id FROM 1876522_shopingsho_posts WHERE CONVERT(post_title使用utf8)LIKE'%音频CD%& #39)