从mysql表中提取唯一值,并按出现次数排序

时间:2014-01-07 05:21:09

标签: php mysql

我对此有点麻烦,我发现如何从多个列中获取唯一值,我知道如何正常排序,但我似乎无法将两者混合

原始的sql语句在这里:

$sql="SELECT DISTINCT UserID, UserIP FROM Visits WHERE PageID='".$_GET['p']."'";

它只获取两个值都是唯一的第一个实例,因此执行' mysql_numrows'事情不起作用。

这是从fetch数组循环中,它可以计算出现的罚款,但在那时它排序太迟了

$sql5="SELECT Date, VisitID FROM Visits WHERE PageID='".$_GET['p']."' AND UserID='".$userid."' AND UserIP='".$userip."' ORDER BY Date";
$result5 = mysql_query($sql5);
$num5 = mysql_numrows($result5);

基本上,它应该根据两列获得唯一值,计算出现的次数,按计数排序,然后如果可能的话也可能按最高匹配日期排序

任何建议都会很棒,欢呼:)
它也只是个人网站,我实际上并没有对信息做任何事情,只是想学习更多的PHP

2 个答案:

答案 0 :(得分:1)

尝试使用GROUP BY,如下所示:

SELECT UserID, UserIP FROM Visits 
WHERE PageID = ###
GROUP BY UserID, UserIP
ORDER BY COUNT(*) DESC, max(`Date`) DESC

答案 1 :(得分:1)

请更改您的查询

$sql = "SELECT UserID, UserIP FROM Visits 
WHERE PageID = '".$_GET['p']."'
GROUP BY UserID, UserIP
ORDER BY COUNT(UserID) DESC";

让我知道是否对您有所帮助。

由于