Подзапрос с агрегатной функцией SQL

0

Целью является обновление столбца 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));
Теги:

1 ответ

0

В 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';

Ваш подзапрос не имеет смысла и не будет работать.

Ещё вопросы

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