MySQL - обновить значения в таблице, возвращенной из запроса? - PullRequest
0 голосов
/ 15 апреля 2019

Я запустил этот запрос, где я объединяю две таблицы и выводу некоторые столбцы обеих таблиц:

SELECT B.option_id, B.product_id, A.title, B.identifier 
FROM `catalog_product_option_title` A JOIN
     `catalog_product_option` B
     ON A.option_id = B.option_id
WHERE A.title = "Breite"

Результат:

enter image description here

Теперь мне нужно ввести значение примера xyz в столбце identifier в результате, везде.Я хотел бы пойти дальше и сделать это вручную.

Как я могу использовать оператор update из MySQL, чтобы решить эту проблему без необходимости вручную изменять его вручную?

Я попробовал этокак это:

UPDATE `catalog_product_option`
SET identifier = 'xyz'
WHERE option_id IN (
    SELECT A.option_id 
    FROM `catalog_product_option_title` A 
    JOIN
         `catalog_product_option` B
         ON A.option_id = B.option_id
    WHERE A.title = "Breite"
)

Но симуляция этого запроса вернула, что это изменит 0 строк.

UPDATE

Я вызвал sql безимитируя его, и теперь я получаю эту ошибку:

1093 - Таблица 'catalog_product_option' указывается дважды, как в качестве цели для 'UPDATE', так и в качестве отдельного источника для данных

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Вы можете переписать ваш запрос как JOIN:

UPDATE `catalog_product_option` B
JOIN `catalog_product_option_title` A ON A.option_id = B.option_id
SET B.identifier = 'xyz' WHERE A.title = "Breite"
1 голос
/ 15 апреля 2019

Можете ли вы попробовать, как это, пожалуйста?

UPDATE `catalog_product_option`
SET identifier = 'xyz'
WHERE option_id IN (
    SELECT option_id FROM (SELECT A.option_id 
    FROM `catalog_product_option_title` A 
    JOIN
         `catalog_product_option` B
         ON A.option_id = B.option_id
    WHERE A.title = "Breite") as x
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...