Ошибка в запросе на обновление - PullRequest
1 голос
/ 22 марта 2012

У меня есть две сущности STOCK (имя, сумма) и PC_SYSTEMS (имя, c_name), и я хочу обновить компоненты, необходимые для создания "Alienware" системы PC, поэтому я хочу, чтобы она вычла 1 из количества компонентов, необходимый для создания системы Alienware, в Stock.

Вот мой запрос:

"UPDATE stock SET amount=amount-1 WHERE name = ( SELECT p.c_name FROM pc_systems p WHERE p.name='Alienware');"

Я получаю странную ошибку, которая говорит:

"возвращено более одной строкиподзапросом, используемым в качестве выражения "

Был бы рад, если бы кто-то мог помочь.

Редактировать:

Я решил это, вставив" IN "в мой запрос вместознак равноКонечный код:

UPDATE stock SET amount=amount-1 WHERE name IN ( SELECT p.c_name FROM pc_systems p        WHERE p.name='Alienware');

Ответы [ 2 ]

3 голосов
/ 22 марта 2012

Что означает, что этот SQL возвращает более 1 строки. Сделайте так, чтобы он возвращал ровно 1 строку.

SELECT p.c_name FROM pc_systems p WHERE p.name='Alienware'
1 голос
/ 22 марта 2012

Поскольку ваш подзапрос возвращает более одной записи, вы не можете использовать этот синтаксис. попробуйте что-то вроде этого:

UPDATE S
SET S.amount=S.amount-1
FROM Stock S
INNER JOIN pc_systems p
    ON S.name = p.c_name
WHERE p.name='Alienware'

или попробуйте это:

update stock 
set s.amount=s.amount-1
from stock s
inner join pc_systems p on S.name = p.c_name
where p.name='Alienware'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...