我正在尝试更新数据库中的行(wordpress电子商务安装),以便其中具有相同ID的库存行为0的所有行都设置为“outofstock”,目前我收到错误' SQL错误1064'
UPDATE `squirrel`.`wp_postmeta`
SET LEFT(`meta_value`, 256) = 'outofstock'
WHERE `post_id` IN (SELECT `post_id` FROM `squirrel`.`wp_postmeta` WHERE
`meta_key` = '_stock'
AND LEFT(`meta_value`, 256) = 0) AND `meta_key` = '_stock_status';
我的代码出了什么问题?
答案 0 :(得分:0)
您应该使用REPLACE
代替LEFT
,因为它会给您1064错误
UPDATE YourTable
SET yourcolumn= REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')
WHERE yourcolumn LIKE '%PATTERN%'
答案 1 :(得分:0)
上述评论很有帮助,但后来出现了其他问题。最后这里是解决方案
UPDATE `squirrel`.`wp_postmeta`
SET `meta_value` = 'outofstock'
WHERE `post_id` IN (SELECT * FROM (SELECT `post_id` FROM
`squirrel`.`wp_postmeta` WHERE `meta_key` = '_stock'
AND `meta_value` = 0) AS custom) AND `meta_key` = '_stock_status';
主要的是通过根据here创建两个嵌套的SELECT语句,这意味着更新并没有因为正在更新的表工作而抱怨。然后我跟着this确保这个新表有它自己的别名。这就是我想要的。