PHP-如何同时使用ORDER BY和GROUP BY
我创建了一个表,其中包含PHP-如何同时使用ORDER BY和GROUP BY,php,mysql,database,group-by,Php,Mysql,Database,Group By,我创建了一个表,其中包含消息、发件人、收件人、时间我希望按发件人分组和按时间排序这是我的代码 $query= mysql_query("SELECT * FROM `table` ORDER BY `time` GROUP BY `sender`")or die(mysql_error()); while($arr = mysql_fetch_array($query)){ $num = mysql_num_rows($query); $msg = $arr ['message']; echo
消息、发件人、收件人、时间
我希望按发件人分组和按时间排序这是我的代码
$query= mysql_query("SELECT * FROM `table` ORDER BY `time` GROUP BY `sender`")or die(mysql_error());
while($arr = mysql_fetch_array($query)){
$num = mysql_num_rows($query);
$msg = $arr ['message'];
echo '</br>';
echo $msg;
}
$query=mysql\u query(“从`表'中选择*按`时间'排序`按`发件人'分组”)或die(mysql\u error());
while($arr=mysql\u fetch\u数组($query)){
$num=mysql\u num\u行($query);
$msg=$arr['message'];
回音“”;
echo$msg;
}
这说明了这个错误
您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1行“groupby
sender”附近使用的正确语法
那么如何解决这个问题呢
谢谢
克劳斯请注意你的优先顺序。在对结果进行分组后,应该对其进行排序
"SELECT * FROM `table` GROUP BY `sender` ORDER BY `time`"
注意你的优先顺序。在对结果进行分组后,应该对其进行排序
"SELECT * FROM `table` GROUP BY `sender` ORDER BY `time`"
试试这个代码
$query= mysql_query("SELECT * FROM `table` GROUP BY `sender` ORDER BY `time` ")or die(mysql_error());
// ^^--will be before order
$num = mysql_num_rows($query); // out of the while loop
while($arr = mysql_fetch_array($query)){
$msg = $arr['message'].'<br />';
// ^^--remove space here
echo $msg;
}
$query=mysql\u query(“按发件人分组,按时间排序”)或die(mysql\u error());
//^^--将在下订单之前
$num=mysql_num_rows($query);//不在while循环中
while($arr=mysql\u fetch\u数组($query)){
$msg=$arr['message'].
;
//^^——删除此处的空格
echo$msg;
}
试试这段代码
$query= mysql_query("SELECT * FROM `table` GROUP BY `sender` ORDER BY `time` ")or die(mysql_error());
// ^^--will be before order
$num = mysql_num_rows($query); // out of the while loop
while($arr = mysql_fetch_array($query)){
$msg = $arr['message'].'<br />';
// ^^--remove space here
echo $msg;
}
$query=mysql\u query(“按发件人分组,按时间排序”)或die(mysql\u error());
//^^--将在下订单之前
$num=mysql_num_rows($query);//不在while循环中
while($arr=mysql\u fetch\u数组($query)){
$msg=$arr['message'].
;
//^^——删除此处的空格
echo$msg;
}
如何使用自联接来获取每个组的最大/最小/something-n行
在您的情况下,它可以应用于您想要的效果,如下所示:
SELECT * FROM
(SELECT group_id, MAX(`yourdate`) AS yourdate FROM tbl_name GROUP BY group_id)
AS x JOIN tbl_name USING (`group_id`,yourdate);
如何使用自连接来获取每个组的最大/最小/某些-n行
在您的情况下,它可以应用于您想要的效果,如下所示:
SELECT * FROM
(SELECT group_id, MAX(`yourdate`) AS yourdate FROM tbl_name GROUP BY group_id)
AS x JOIN tbl_name USING (`group_id`,yourdate);
尝试:从表中选择*按发件人分组
按时间下单
尝试:从表中选择*按发件人分组
按时间下单
如何从大到小排序?在查询结束时添加DESC?谢谢这是我的建议problem@Klaus贾斯珀:还有一个问题——你不能问问题:-)如何从大到小排序?在查询末尾添加DESC?谢谢这是我的建议problem@Klaus贾斯珀:还有一个问题-你不能问问题:-)谢谢,现在我想在时间之前回复msg订单,那么我该怎么做呢?请给我看一个表格的例子,这样我就可以知道为什么它没有排序了。谢谢,现在我想在时间之前回显msg order,那么我该怎么做呢?请给我看一个桌子的例子,这样我就可以知道为什么它没有点餐了。?