我有 3 列 questionid
、replyid
和 userid
。
我想从 userid 中选择所有 questionid,其中 userid 是 session[userid]
,
然后从中选择不同的 questionid
。
现在,我将所有属于 $_SESSION['user_id']
的 questionid
放入一个数组中(并从中删除重复项),然后
我再次通过另一个查询
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,2
和 8,3
在同一个网页中(一个问题和两个答案),我想避免显示重复的问题...
所以我尝试了错误的方法,因为我采用了不同的 questionid
,然后再次从 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
最佳答案
这相当于您在帖子中描述的两个查询:
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
,例如 SUM
、MAX
或 MIN
。
关于php - 选择然后再次选择不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671768/