我有下面的查询:如何一次显示一行,如果所有的数据都是一样
$questionquery = "
SELECT DISTINCT q.QuestionContent, o.OptionType, q.NoofAnswers, GROUP_CONCAT(DISTINCT Answer ORDER BY Answer SEPARATOR '') AS Answer, r.ReplyType,
q.QuestionMarks, q.SessionId
FROM Answer an
INNER JOIN Question q ON q.QuestionId = an.QuestionId and an.SessionId = q.SessionId
JOIN Reply r ON q.ReplyId = r.ReplyId
JOIN Option_Table o ON q.OptionId = o.OptionId
WHERE ".implode(" AND ", array_fill(0, $numTerms, "q.QuestionContent LIKE ?"))."
GROUP BY an.SessionId, an.QuestionId
ORDER BY ".implode(", ", array_fill(0, $numTerms, "IF(q.QuestionContent LIKE ?, 1, 0) DESC"))."
";
现在下面是每个数据库表的样子:
会话表:
SessionId SessionName
1 AAA
2 AAB
3 AAC
Question Table:
SessionId QuestionId QuestionContent ReplyId OptionId
1 1 Here is a single answer 2 1
2 3 Here is a single answer 2 1
3 3 Here is a single answer 2 1
Answe R表:
AnswerId SessionId QuestionId Answer
1 1 1 True
2 2 3 True
3 3 3 True
回复表:
ReplyId ReplyType
1 Single
2 Multiple
选项表:
OptionId OptionType
1 True or False
现在我收到的问题是,在数据库中,我有一个是完全的三个问题相同的答案,相同的标记,相同的选项类型等,都是一样的,这是很好的。但在查询中,我想要做的是,如果有多个行的列都匹配,那么只显示一次。因此,在目前它在下面的查询输出显示此:
Here is a single answer True or False 1 True Multiple 5
Here is a single answer True or False 1 True Multiple 5
Here is a single answer True or False 1 True Multiple 5
但随着问题的所有细节是一样的,它应该只显示一次象下面这样:
Here is a single answer True or False 1 True Multiple 5
如何如果存在具有完全相同数据的多行,我可以使查询显示一行吗?
UPDATE:
$questionquery = "
SELECT DISTINCT q.QuestionContent, o.OptionType, q.NoofAnswers, Answer, r.ReplyType,
q.QuestionMarks
FROM
(
SELECT DISTINCT q.QuestionContent, o.OptionType, q.NoofAnswers, GROUP_CONCAT(DISTINCT Answer ORDER BY Answer SEPARATOR '') AS Answer, r.ReplyType,
q.QuestionMarks, q.SessionId
FROM Answer an
INNER JOIN Question q ON q.QuestionId = an.QuestionId and an.SessionId = q.SessionId
JOIN Reply r ON q.ReplyId = r.ReplyId
JOIN Option_Table o ON q.OptionId = o.OptionId
WHERE ".implode(" AND ", array_fill(0, $numTerms, "q.QuestionContent LIKE ?"))."
GROUP BY an.SessionId, an.QuestionId
)
AS tmpresult
ORDER BY ".implode(", ", array_fill(0, $numTerms, "IF(q.QuestionContent LIKE ?, 1, 0) DESC"))."
";
您可以添加限制1 – Joddy
@Joddy在哪里添加查询中的限制1? – CMB
后_ORDER BY DESC_ ** **新增 _LIMIT 1_ –
Joddy