我正在使用计数查询从我的表中选择所有不重复的记录,我正在使用以下内容:
function check_profile_views3() {
global $connection;
global $_SESSION;
$query = "SELECT COUNT(DISTINCT profile_id) totalCOUNT2 FROM ptb_profile_views WHERE viewed_profile_id=".$_SESSION['user_id']." AND profile_id!=".$_SESSION['user_id']."";
$check_profile_views_set3 = mysql_query($query, $connection);
confirm_query($check_profile_views_set3);
return $check_profile_views_set3;
}
我的桌子看起来像这样:
id | profile_id | viewed_profile_id
1 3 6
2 3 6
3 4 6
4 -1 6
5 -1 6
所以在这个例子中,我的查询选择了不同的值并且不计算那些在 profile_id 字段中重复的值,
但是,我现在想在此查询中添加一个例外,以计算所有“-1”配置文件 ID 以及计算所有不同的正数。
这可能我还在学习sql吗,所以如果有人能帮助我,我会非常感激。
谢谢
期望的结果
the mysql table goes from this:
id | profile_id | viewed_profile_id
1 3 6
2 3 6
3 4 6
4 -1 6
5 -1 6
to this:
end result pulls results from table like this
id | profile_id | viewed_profile_id
1 3 6
2 4 6
3 -1 6
4 -1 6
好的,所以我尝试了 JW 的答案,我试图这样做,但我在某个地方出错了:
这就是我如何进行查询:
function check_profile_views3() {
global $connection;
global $_SESSION;
$query = "
SELECT a.*
FROM ptb_profile_views a
INNER JOIN
(
SELECT profile_id, MIN(ID) min_ID
FROM ptb_profile_views
WHERE profile_id > 0
GROUP BY profile_id
) b ON a.profile_id = b.profile_id AND
a.ID = b.Min_ID
UNION
SELECT *
FROM ptb_profile_views
WHERE profile_id < 0";
$check_profile_views_set3 = mysql_query($query, $connection);
confirm_query($check_profile_views_set3);
return $check_profile_views_set3;
}
然后我在页面上这样调用它:
$check_profile_views_set3 = check_profile_views3();
while ($views3 = mysql_fetch_array($check_profile_views_set3)) {
echo "". $views3['totalCOUNT2'] ."";