我正在尝试更新某些产品在数据库中的类别。但我得到一个错误,我不明白我的陈述在哪里错了。请帮忙。我希望找到名称中包含特定字词的产品,之后我会更新此产品的类别。
我想从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%')
答案 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_shoping
。sho_posts
WHERE CONVERT(post_title
使用utf8)LIKE'%音频CD%& #39)