簡體   English   中英

MySQL查詢全選僅找到兩個選項之一的地方

[英]MySQL Query select all where only one of two options are found

我有兩個表:

Membersmember_idmember_info

Question_AnswersQuestion_idAnswer

如果有兩個問題,我需要找出哪個成員僅回答了一個問題,而不是兩個都回答了。

我嘗試使用GROUP BY ,但沒有獲得所需的結果。

我最近得到的是這個查詢:

SELECT DISTINCT(qa.question_id), mem.member_id
FROM question_answers qa
LEFT JOIN members mem ON mem.member_id = qa.member_id

這使我得到用戶回答的問題的結果,但其中包括成員回答兩個問題的結果。

我正在尋找有關如何SELECT僅回答其中一個問題的成員的建議。

編輯:我已經越來越近,但想做得更好。

    SELECT IF( COUNT( DISTINCT( qa.question_id ) ) = 2, 'TWO', 'ONE' ), mem.member_id, MAX( qa.question_id )
FROM question_answers qa
JOIN members mem ON qa.member_id = mem.member_id
WHERE mem.type = 9
GROUP BY mem.member_id  
ORDER BY `mem`.`member_id` ASC

這是一種駭人聽聞的方法,因為問題ID當前在0和1上,但是如果有人對如何從SELECT IF(返回問題ID提出建議,那將大有幫助。

就個人而言,我將擁有第三個表格來保存誰回答了哪些問題的數據。

在我的示例中,我將此表稱為Answered

這是我要解決的方法,如果您不想這樣做,也許可以從本示例中總結一些想法: [DEMO HERE]

SELECT m1.*, qa.*
FROM Members m1
INNER JOIN Answered a ON m1.member_id = a.member_id
INNER JOIN Question_Answers qa ON a.question_id = qa.question_id
WHERE m1.member_id IN (
    SELECT m2.member_id
    FROM Members m2
    INNER JOIN Answered a ON m2.member_id = a.member_id
    INNER JOIN Question_Answers qa ON a.question_id = qa.question_id
    GROUP BY m2.member_id
    HAVING COUNT(m2.member_id) = 1);

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM