gpt4 book ai didi

php - 计算一个值出现的次数并将计数发送到另一列?

转载 作者:行者123 更新时间:2023-11-29 00:31:27 25 4
gpt4 key购买 nike

我有一个表,我已通过 PHP 脚本将数据输入其中,并使用 phpMyAdmin 对其进行管理。我的表有 4 列。第一个是自动递增,第二个和第三个是输入的值,最后一个是跟踪第 3 列的值出现了多少次。

这是我的表格目前的样子

RowNumber   UserID  SongID  Plays
1 540 2191 0
2 540 2671 0
3 550 3891 0
4 550 2191 0
5 550 2671 0
6 560 9391 0
7 560 2191 0

我想搜索整个表并更改 Plays 列中的值以显示该值在表中出现的次数。

理想情况下,这就是我希望我的表输出的方式:

RowNumber   UserID  SongID  Plays
1 540 2191 3
2 540 2671 2
3 550 3891 1
4 550 2191 3
5 550 2671 2
6 560 9391 1
7 560 2191 3

有没有办法搜索表格并更新这些值?输入到表中的数据量非常大,因此非常感谢有效的解决方案。

最佳答案

考虑使用 View 而不是表,除非您出于性能原因需要缓存值。您可以计算子查询中每个值的计数,并将结果连接回表中,如下所示:

SELECT Table.RowNumber, Table.UserID, Table.SongID, x.Plays
FROM Table
INNER JOIN (
SELECT SongID, COUNT(*) AS Plays
FROM Table
GROUP BY SongID
) x
ON Table.SongID = x.SongID;

然后使用 CREATE VIEW TableWithPlays AS SELECT ... 从中创建一个 View 。在 SongID 上建立索引将允许子查询相当快地完成,并且您永远不必担心 Plays 列是最新的。

如果您确实想要缓存这些值,请使用基于上述查询的 UPDATE 查询:

UPDATE Table a
INNER JOIN (
SELECT SongID, COUNT(*) AS Plays
FROM Table
GROUP BY SongID
) b
ON a.SongID = b.SongID
SET Plays = b.Plays;

与 View 解决方案一样,不要忘记 SongID 上的索引。

关于php - 计算一个值出现的次数并将计数发送到另一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16319555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com