Есть таблица:
id data id_name type
1 15.04.2019 15 144 1
2 15.04.2019 16 154 2
3 15.04.2019 17 144 1
4 15.04.2019 16 154 2
Как мне можно обьединить повторяющиеся строки в таблицу по дате, а также удалить повторяющиеся и сделать 1 запись вместо повторяющихся, и пятым параметром sum запихнуть количество повторяющихся строк.
id data id_name type sum
1 15.04.2019 144 1 2
2 15.04.2019 154 2 2
Чтоб в итоге в таблице остались 2 записи. Сортировка будет только по дню, часы будут откидываться.
Буду благодарен за любую идею, помощь.
-- создать поле
ALTER TABLE mytable
ADD COLUMN summ INT DEFAULT NULL;
-- посчитать количества
UPDATE mytable, (SELECT MIN(id) id, COUNT(*) summ, DATE(data) data
FROM mytable
GROUP BY DATE(data), id_name, type) sq
SET mytable.summ = sq.summ,
mytable.data = sq.data
WHERE mytable.id = sq.id;
-- удалить лишнее
DELETE
FROM mytable
WHERE summ IS NULL;
Заранее прошу прощения но я не силен в синтаксисе MySQL
если нужна просто выборка, то все решается с помощью группировки:
SELECT data, id_name, type, COUNT(*) as sum
FROM <table_name>
GROUP BY data, id_name, type
если вам необходимо удалить запись которая повторяется, то можно добавить к таблице триггер before insert
и прописать условие нахождения похожей записи и апдейта поля sum у этой записи
статья про триггеры
Продвижение своими сайтами как стратегия роста и независимости