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






Вы можете использовать этот запрос для создания новой таблицы, в которой есть одна строка для каждого отдельного 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
Примечания
play_count равно 99, если оно больше, вам нужно будет увеличить размер таблицы numbers, добавив к ней еще одну цифру JOIN.(id INT AUTO_INCREMENT PRIMARY KEY) из первой строки запроса и изменили SELECT на SELECT id, track_id, 1 AS play_count.Спасибо за ответ, проблема решена с помощью красноречивого запроса laravel.
Вы должны опубликовать это как ответ и принять его, чтобы помочь другим людям, у которых может быть такая же проблема.
почему ты хочешь сделать это?