只计算mysql表中的不同值?

时间:2013-12-10 14:11:02

标签: php mysql

我有一个用于保存用户消息的表:

id | msg_id | recipient | sender
1       1         4         8
2       1         4         8
3       1         4         8
4       6         4         8

我正在尝试计算msg_id的行数,但是我想使用一个不同的函数,它只计算每个数字一次。因此,如果数字'1'出现4次,则计数应该只计算一次'1'并忽略其他行。

有人可以告诉我如何实现这一目标。

到目前为止,我有这个计算msg_id的所有行,我怎样才能将它更改为不同的数量,谢谢。

function check_new_messages() {
            global $connection;
            global $_SESSION;
            $query = "SELECT COUNT(id) FROM ptb_messages WHERE to_user_id=".$_SESSION['user_id']." AND deleted_to='0' AND read_message='0' AND from_user_id != '0'";
            $check_new_messages_set = mysql_query($query, $connection);
            confirm_query($check_new_messages_set);
            return $check_new_messages_set;     
        }

输出:

<?php
$check_new_messages_set = check_new_messages();
while ($new = mysql_fetch_array($check_new_messages_set)) { 
echo "". $new['COUNT(id)'] .""; 
?><? } ?>

3 个答案:

答案 0 :(得分:2)

SELECT COUNT (DISTINCT msg_id)  FROM ptb_messages GROUP BY msg_id 

答案 1 :(得分:0)

SELECT COUNT(msg_id) FROM ptb_messages GROUP BY msg_id 

答案 2 :(得分:0)

将您的SQL语句更改为:

SELECT COUNT(DISTINCT msg_id) FROM ptb_messages WHERE to_user_id=