Проверить наличие значения при выполнении запроса UPDATE

0

Мне нужно выполнить простой запрос на обновление, где обновление должно быть выполнено, если нет значения с обновляемым значением (item_name). Например,

Таблица DB [item_types]

item_id(PK) | item_name

Предполагая, что существует item_id с 6, Моя попытка

UPDATE item_types as k SET k.item_name = 'item_1' WHERE NOT EXISTS (SELECT * FROM item_types as a WHERE a.item_name = 'item_1') AND k.item_id = '6'

Но это дает мне ошибку

"You can't specify target table 'k' for update in FROM clause"

Не могли бы вы объяснить здесь ошибку и как я могу это достичь?

Спасибо

Теги:
sql-update
mysql-error-1093

3 ответа

0
Лучший ответ

Вы можете поместить уникальное ограничение в поле item_name и уловить ошибку.

  • 0
    да, это хороший способ сделать это, но мне нужно выяснить, в чем проблема с моим запросом, не могли бы вы объяснить?
0

Как предположил Тоби, вы не можете использовать псевдоним в строке UPDATE. Попробуйте использовать следующий синтаксис:

UPDATE item_types 
SET item_name = 'item_1' 
FROM item_types k
WHERE NOT EXISTS (SELECT * FROM item_types as a WHERE a.item_name = 'item_1') 
AND k.item_id = '6' 

hth, R

0

Я не думаю, что вы можете использовать псевдоним для таблицы в инструкции insert. Также используйте, а не AND.

Try

UPDATE item_types SET item_name = 'item_1' WHERE NOT EXISTS (SELECT * FROM 
item_types as a WHERE a.item_name = 'item_1') , item_id = '6'
  • 0
    ваше утверждение дает мне синтаксическую ошибку с MySQL, вы уверены в синтаксисе?

Ещё вопросы

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