【发布时间】:2014-07-17 20:05:28
【问题描述】:
我有一个具有 groupBy 的 mysql 选择查询。我想为单个用户计算分组后的所有记录。有没有办法直接从 mysql 中解决这个问题?
$query = mysql_query('SELECT distinct(tape_no) , user_id, username FROM `audio_history` group by username , tape_no');
$i=1;
$temp = '';
while($res = mysql_fetch_object($query)){
if($temp != $res->username && $temp != ''){
echo $res->user_id . '---' .$temp . "$i<br>";
$i = 0;
}
temp = $res->username;
$count = $i;
$i++;
}
sql语句
SELECT distinct(tape_no) ,
user_id, username
FROM `audio_history`
group by username , tape_no
返回
tape_no user_id username
001 790 adam
422 790 adam
903 001 alic
585 005 cooper
356 005 cooper
697 005 cooper
我希望输出返回为
uname uif count_for_individual_user
adam 790 2
alic 001 1
cooper 005 3
我需要在不使用 php 代码的情况下通过查询获得最简单的方法。提前致谢
【问题讨论】:
-
注意:DISTINCT 不是一个函数。 DISTINCT 关键字适用于整个 SELECT 列表。 SELECT 列表中第一列周围的括号有 no 效果,它们被忽略。如果我们写
SELECT DISTINCT(fee), fi让它“看起来”像一个函数,但它不是。和DISTINCT fee, fi完全一样。