Как обновить много строк, которые соответствуют условиям в SQL

0

Я пытаюсь обновить строки в базе данных (установка электронной почты 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'; 

Что не так с моим кодом?

  • 0
    Вы пытаетесь присвоить значение функции: "SET LEFT (..."
  • 0
    SET LEFT ('meta_value', 256) = 'outofstock' здесь не так. Вы должны указать имя поля вместо функции. :(
Теги:
records

2 ответа

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';

Главное в том, что пути создания два вложенных ЗЕЬЕСТОВ согласно здесь это означает, что обновление не жаловалось работать со стола, который был обновляя. Затем я последовал за этим, чтобы убедиться, что у этой новой таблицы есть собственный псевдоним. Это сделало то, что я хотел.

0

Вы должны использовать REPLACE вместо LEFT как это даст вам ошибку 1064

 UPDATE YourTable
 SET yourcolumn= REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')
 WHERE yourcolumn LIKE '%PATTERN%'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню