Использование mysql для обновления строки в таблице отношений - PullRequest
0 голосов
/ 02 августа 2020

у меня две таблицы

пользователи

- user_id
- username
- password
- api_key

заказы

- order_id
- user_id
- product

как я могу обновить продукт, выбрав пользователя на основе ключа api?

то есть:

UPDATE orders SET product = "" 
WHERE order.user_id = (SELECT id FROM users WHERE api_key = "xxxx");

Оператор SQL - это просто ожидаемое поведение ..

1 Ответ

0 голосов
/ 02 августа 2020

Подзапрос:

SELECT id FROM users WHERE api_key = 'xxxx'

может возвращать более 1 строки, и в этом случае вы должны использовать оператор IN:

UPDATE orders 
SET product = '' 
WHERE user_id IN (SELECT user_id FROM users WHERE api_key = 'xxxx');

Или вы можете сделать это с помощью join:

UPDATE orders o
INNER JOIN users u ON u.user_id = o.user_id 
SET o.product = '' 
WHERE u.api_key = 'xxxx';

Обратите внимание, что установка значения столбца на пустую строку, как правило, не является хорошей идеей. Лучше установить null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...