选择然后再选择不同的值

时间:2012-10-01 10:44:35

标签: php mysql sql arrays

我有3列questionidreplyiduserid

我想选择所有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

1 个答案:

答案 0 :(得分: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