Mysql обьединение записей

228
02 февраля 2020, 03:30

Есть таблица:

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 записи. Сортировка будет только по дню, часы будут откидываться.

Буду благодарен за любую идею, помощь.

Answer 1
-- создать поле
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;
Answer 2

Заранее прошу прощения но я не силен в синтаксисе MySQL

если нужна просто выборка, то все решается с помощью группировки:

SELECT data,  id_name, type, COUNT(*)   as sum
FROM <table_name>
GROUP BY data, id_name, type

если вам необходимо удалить запись которая повторяется, то можно добавить к таблице триггер before insert и прописать условие нахождения похожей записи и апдейта поля sum у этой записи

статья про триггеры

READ ALSO
Проектирование клиент сервера

Проектирование клиент сервера

Начиная проектирование нового проекта (мобприложение) встретил задачу с который хотел посоветоваться с вами

217
Visual studio и OpenServer

Visual studio и OpenServer

У меня есть база данных mysql, создал через phpmyadmin, встроенный в openserverТо есть я хочу подключить её к проекту Visual Studio, как будто она находится на сервере

206
UPDATE запрос в MySQL

UPDATE запрос в MySQL

Есть две таблицы:

223
Как вычленить часть текста из колонки в mySQL?

Как вычленить часть текста из колонки в mySQL?

У меня есть колонна varchar, в которой строки выглядят так:

255