Я пытаюсь обновить строки в базе данных (установка электронной почты Wordpress), так что все строки, в которых строка запаса с одинаковым идентификатором равна 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';
Что не так с моим кодом?
Вышеприведенные комментарии были полезны, но были и другие проблемы, возникшие позже. В итоге здесь было решение
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';
Главное в том, что пути создания два вложенных ЗЕЬЕСТОВ согласно здесь это означает, что обновление не жаловалось работать со стола, который был обновляя. Затем я последовал за этим, чтобы убедиться, что у этой новой таблицы есть собственный псевдоним. Это сделало то, что я хотел.
Вы должны использовать REPLACE
вместо LEFT
как это даст вам ошибку 1064
UPDATE YourTable
SET yourcolumn= REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')
WHERE yourcolumn LIKE '%PATTERN%'