Целью является обновление столбца object_category таблицы Inventory для объектов с наименьшим количеством элементов в таблице (count (name))
Я знаю, что при использовании подзапроса для предложения IN подзапрос должен возвращать один столбец или значение. Однако я не уверен, как выполнить свою задачу, оставаясь синтаксически правильной.
Это код, который у меня есть до сих пор, подзапрос сам по себе дает правильные два объекта для обновления, а не когда я помещаю его в предложение IN
UPDATE Inventory
SET object_category = 'ABC'
WHERE Inventory.object_category in (
select count(name) as nameCount , object_category
from Inventory
group by object_category
having nameCount <= min(nameCount));
В MySQL вам нужно выразить эту логику с помощью join
. Если вы хотите обновить только одну категорию, этого достаточно
UPDATE Inventory i JOIN
(SELECT count(name) as nameCount, object_category
FROM Inventory
GROUP BY object_category
ORDER BY nameCount
LIMIT 1
) ii
ON ii.object_category = i.object_category
SET i.object_category = 'ABC';
Ваш подзапрос не имеет смысла и не будет работать.