我有一个用于保存用户消息的表:
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)'] ."";
?><? } ?>
答案 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=