mysql – SQL ORDER BY Idea
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – SQL ORDER BY Idea,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1451字,纯文字阅读大概需要3分钟。
内容图文
![mysql – SQL ORDER BY Idea](/upload/InfoBanner/zyjiaocheng/904/928ebaee66724b869b61b61fbe4028db.jpg)
我有两张桌子.
上传者 – id,名称,图标,视图
视频 – 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 Idea全部内容,希望文章能够帮你解决mysql – SQL ORDER BY Idea所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。