5

我有 3 列questionid,replyiduserid.

我想全选questionid's from userid where userid is session[userid],然后选择questionid与它不同。

现在我把所有那些questionid属于$_SESSION['user_id']一个数组(并从中删除重复项)然后我再次传递另一个查询

foreach($array as $x)
{
$query="select questionid,replyid,userid from table where questionid=$x"
}

但我认为上述步骤可以在查询本身中完成(并且上述步骤也不起作用)。我在下面尝试过,但它不起作用。如果我尝试通过此查询,那么仍然会出现重复值:

SELECT distinct(questionid),replyid,userid 
from table 
where userid=$_SESSION['user_id']

那么查询应该是什么?

questionid,replyid,userid

8          ,2     ,45

8          ,3      ,45

9           ,8      ,41

但是由于 8,28,3在同一个网页中(一个问题和两个答案),我想避免显示重复的问题......

所以我尝试了错误的方式,因为我正在采取不同的方式questionid,然后再次选择* from table where questionid之前的方式。

但是正如@Mahmoud Gamal 建议的那样,我做到了

 SELECT distinct questionid, `answerid`, `userid`
 FROM `table` 
 WHERE  userid='$user' 

但是我又做了同样的重复的事情。所以我加了limit 0,1

 SELECT distinct questionid, `answerid`, `userid`
 FROM `table`
 WHERE  userid='$user' 
 LIMIT 0,1
4

1 回答 1

1

这相当于您在帖子中描述的两个查询:

SELECT DISTINCT questionid, replyid, userid 
FROM table 
WHERE questionid IN
(
    SELECT DISTINCT questionid
    FROM table 
    WHERE userid = @user_id
)

这会给你DISTINCT questionid, replyid, userid。但这不是必需的,包含DISTINCT(questionid).

如果你正在寻找distinct questionid,你最终会得到一个GROUP BY questionid与其他两个字段的聚合函数replyid, userid,比如SUMMAXMIN

于 2012-10-01T10:49:41.190 回答