我在下面創建一個查詢,它根據用戶在搜索欄中輸入的術語檢索數據。現在我試圖做的不是顯示重複的數據,所以如果有兩行所有字段完全相同,那麼它是一個重複行,所以它只顯示一次而不是多次。現在我認爲它似乎這樣做,因爲我沒有看到重複的行,但我所做的只是做一個GROUP BY與所有的SELECT字段,除了Answer字段,因爲它不讓我在GROUP BY子句中有一個組concat。我是否需要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"))."
所以你說的是在SELECT中的group_concat,而不是在Group By或其他方式中包含該字段,不要在選擇字段中包含組concat以供回答,但是在組中包括答案?所以,如果這是正確的,那麼我的查詢是否正確,而不是顯示重複結果呢? – user1914374
@ user1914374。 。 。你不能在'group by'子句中使用'min()','max()','avg()'和'group_concat()'等函數。如果你想按他們分組,你需要一個子查詢。所以,是的,你的查詢很好。 –
非常感謝:) – user1914374