Войти Регистрация
Data base

107. Дубли остатков, которые пропустил UNIQUE

Лёгкая

MySQL · MySQL 8.4.6

В таблице stocks остатки продавцов. warehouse_id = NULL — товар лежит на складе самого продавца (FBS). Уникальный индекс (seller_id, sku, warehouse_id) должен был не допустить двух строк на одну позицию, но интеграция продавца шлёт остатки дважды, и дубли появились.

Найдите позиции с дублями: seller_id, sku, warehouse_id, copies — сколько строк.

В работе: Чистка данных перед пересчётом доступного остатка на витрине.

Как проверяем Движка MySQL в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите все верные варианты (одна лишняя отметка допустима). После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
NULLGROUP BYHAVINGдедупликация

Источник: на данных Ozon: остатки продавцов по складам. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.

Какие запросы найдут позиции с дублями?

  • EXISTS с обычным =
  • GROUP BY seller_id, sku
  • GROUP BY по трём колонкам
  • Только строки с warehouse_id IS NOT NULL
  • EXISTS с оператором <=>