Разделить одну строку на несколько строк в соответствии со столбцом sum

схема

В таблице track_play_counts есть столбец с именем play_count, который представляет собой сумму отдельных track_play_count. Как разбить столбец play_count на разные строки, в которых значение play_count будет равно 1? В таблице тысячи данных, поэтому вручную я не могу это сделать.

Например, если play_count равен 10, то должно быть 10 строк с 1 play_count. Как я могу добиться этого с помощью mysql или laravel?

почему ты хочешь сделать это?

Nick 01.01.2019 05:56

из-за меняющихся требований поля.

nidhi_007 01.01.2019 06:13
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
222
1

Ответы 1

Вы можете использовать этот запрос для создания новой таблицы, в которой есть одна строка для каждого отдельного track_play_count.

CREATE TABLE new_play_counts (id INT AUTO_INCREMENT PRIMARY KEY) AS
SELECT track_id, 1 AS play_count
FROM (SELECT n10.n*10 + n.n AS num
      FROM (SELECT 0 AS n UNION SELECT 1 UNION SELECT 2 UNION SELECT 3
                          UNION SELECT 4 UNION SELECT 5 UNION SELECT 6
                          UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) n10
      JOIN (SELECT 0 AS n UNION SELECT 1 UNION SELECT 2 UNION SELECT 3
                          UNION SELECT 4 UNION SELECT 5 UNION SELECT 6
                          UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) n
      ) numbers
JOIN track_play_counts p ON p.play_count > numbers.num
ORDER BY p.Id, numbers.num

Демо на dbfiddle

Примечания

  1. Я предположил, что максимальное значение play_count равно 99, если оно больше, вам нужно будет увеличить размер таблицы numbers, добавив к ней еще одну цифру JOIN.
  2. Я также предположил, что вы захотите присвоить каждой строке в новой таблице отдельное значение идентификатора, в противном случае вы бы удалили (id INT AUTO_INCREMENT PRIMARY KEY) из первой строки запроса и изменили SELECT на SELECT id, track_id, 1 AS play_count.

Спасибо за ответ, проблема решена с помощью красноречивого запроса laravel.

nidhi_007 01.01.2019 09:59

Вы должны опубликовать это как ответ и принять его, чтобы помочь другим людям, у которых может быть такая же проблема.

Nick 01.01.2019 11:42

Другие вопросы по теме