gpt4 book ai didi

mysql - SQL ORDER BY 想法

转载 作者:可可西里 更新时间:2023-11-01 07:37:17 24 4
gpt4 key购买 nike

我有两张 table 。上传者 - id、名称、图标、 View 视频 - id、上传者、视频、观看次数

上传者列用作视频上传者的引用。因此,我可以使用 sum() 函数来计算每个用户从他的所有视频中总共获得的观看次数。现在我想按 desc 总观看次数对这些用户进行排序。

我该怎么做?这是我目前所拥有的代码...

//Retrieve data from the database
$fkbar = mysql_query("SELECT * FROM freaks");
while($fkrow = mysql_fetch_array($fkbar))

//Echo Theme Template on pages
{
$frkid = $fkrow['id'];
$viewq = mysql_query("SELECT SUM(views) AS vw FROM videos WHERE ref1='{$frkid}' OR ref2='{$frkid}' OR ref3='{$frkid}'");
while($viewcnt = mysql_fetch_array($viewq))
{

$viewcount = $viewcnt['vw'];

echo "<div class='diva' id='{$viewcount}'>";
echo "<div class='inner-diva'><a href='/mobile/freaks/?i={$fkrow['id']}'>";
echo "<img id='{$fkrow['id']}' class='dvBarIco' src='/assets/ico/{$fkrow['icon']}' height='80px'></a></div>";
echo "</div>";
}
}

最佳答案

只需使用聚合添加一个 ORDER BY 子句:

ORDER BY SUM(views) DESC

根据您的评论,您可以首先使用子查询来进行排序:

SELECT *
FROM freaks f
ORDER BY (SELECT SUM(views) FROM videos WHERE ref1=f.id OR ref2=f.id OR ref3=f.id) DESC

您也可以使用联接来执行此操作,但是 OR 可能会使事情变得复杂:

SELECT f.*, COALESCE(v.views, 0) total_views
FROM freaks f
LEFT OUTER JOIN (
SELECT SUM(views) views, id
FROM (
SELECT views, ref1 AS id
FROM videos
UNION ALL
SELECT views, ref2 AS id
FROM videos
UNION ALL
SELECT views, ref3 AS id
FROM videos
) x
GROUP BY id
) v ON f.id = v.id
ORDER BY total_views DESC

关于mysql - SQL ORDER BY 想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19309692/

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