ユーザーが検索バーに入力した用語に応じてデータを取得するクエリを以下に作成しています。今、私がやろうとしているのは重複データを表示しないことです。したがって、すべてのフィールドがまったく同じである行が 2 つある場合、それは重複行であるため、この行は複数回ではなく 1 回だけ表示されます。重複する行が表示されないので、これを行うように見えると思いますが、GROUP BY 句にグループ連結を含めることができないため、Answer フィールドを除くすべての SELECT フィールドで GROUP BY を実行するだけでした。
しかし、私の質問は、重複行を表示しないために GROUP Y 句のそのフィールドが必要なのか、それとも本当に必要ないのかということです。
SELECT
q.QuestionContent,
o.OptionType,
q.NoofAnswers,
GROUP_CONCAT(DISTINCT Answer ORDER BY Answer SEPARATOR ',') AS Answer,
r.ReplyType,
q.QuestionMarks
FROM Question q
LEFT JOIN Answer an
ON q.QuestionId = an.QuestionId
LEFT JOIN Reply r
ON q.ReplyId = r.ReplyId
LEFT JOIN Option_Table o
ON q.OptionId = o.OptionId
WHERE ".implode(" AND ", array_fill(0, $numTerms, "q.QuestionContent LIKE ?"))."
GROUP BY q.QuestionContent,
o.OptionType,
q.NoofAnswers,
r.ReplyType,
q.QuestionMarks
ORDER BY ".implode(", ", array_fill(0, $numTerms, "IF(q.QuestionContent LIKE ?, 1, 0) DESC"))."