我正在使用计数查询从我的表中选择所有非重复记录, 我正在使用以下内容:
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'] ."";
答案 0 :(得分:0)
SELECT seen_profile_id,COUNT(DISTINCT profile_id)totalCOUNT2 来自ptb_profile_views WHERE profile_id不在(&#34;。$ _ SESSION [&#39; user_id&#39;]。&#34;, - 1) GROUP by seen_profile_id
答案 1 :(得分:0)
试试这个
SELECT id,profile_id,viewed_profile_id
FROM ptb_profile_views p
INNER JOIN
( SELECT MIN(id) minid FROM ptb_profile_views
GROUP BY profile_id) x
ON p.id = x.minid
WHERE profile_id > 0
GROUP BY profile_id
UNION
SELECT id,profile_id,viewed_profile_id
FROM ptb_profile_views
WHERE profile_id <= 0