Доброго времени суток господа. Прошу вашей помощи, так как не могу разобраться как реализовать одну фичу.
Имеется таблица в БД в которой есть 4 столбца:
| id | Name | Status | Quantity |
+----+------+--------+----------+
Через PHP я добавляю в БД данные скажем о фруктах, их состоянии и количестве.
В идеале должно получаться так:
| id | Name | Status | Quantity |
+----+------+--------+----------+
| 1 | Appl | Good | 10 |
| 2 | Appl | Bad | 4 |
| 3 | Appl | Mell | 42 |
| 4 | Pear | Good | 11 |
| 5 | Pear | Mell | 15 |
| 6 | Pear | Bad | 2 |
......
И список таких фруктов около 10,000. Время от времени я добавляю в таблицу не достающие фрукты, так как НЕТ возможности сделать Unique
столбец, я перед добавлением делаю проверку через PHP с запросами в БД, если такой фрукт есть - то не добавлять, если нету - то добавить.
Но в один прекрасный день, что-то пошло не так и моя проверка не сработала, в итоге в БД появились задублированные данные к примеру:
| id | Name | Status | Quantity |
+----+------+--------+----------+
| 1 | Appl | Good | 10 |
| 2 | Appl | Bad | 4 |
| 3 | Appl | Mell | 42 |
| 141| Appl | Good | 10 |
| 142| Appl | Bad | 4 |
| 143| Appl | Mell | 42 |
......
Теперь соответственно есть 2 варианта развития событий:
Написать запрос в БД который будет находить повторяющиеся строки по Name
и Status
и удалять строки с наименьшим ID
. Т.е. находит 2 строки |2|Appl|Bad|4|
и |142|Appl|Bad|4|
, у второй строки ID
больше, значит удалить первую строку.
Написать запрос, который через PHP будет вытягивать с БД значения с наибольшим ID.
Прошу подсказать как можно написать одно из вышеприведенных условий, либо натолкните на правильную мысль. Буду очень благодарен!
Удалите дубликаты и создайте уникальный индекс по двум полям:
CREATE UNIQUE INDEX Table_Name_Status_uindex ON table (Name, Status);
При инсерте обрабатывайте исключение.
Вот второй вариант
SELECT MAX(id), name status, quantity FROM `table` WHERE 1 group by name, status, qty
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Помогите пожалуйста разобраться с выводом статистики переходов, сильно не ругайте, делаю первые шаги в освоении кода
ПриветПишу свой первый проект на Spring(онлайн банк)