gpt4 book ai didi

MySQL 查询选择全部,仅找到两个选项之一

转载 作者:行者123 更新时间:2023-11-29 10:20:56 25 4
gpt4 key购买 nike

我有两个表:

成员(member_idmember_info)

Question_Answers(Question_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 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

这是一种 hacky 方式,因为问题 ID 目前为 0 和 1,但如果有人对如何从 SELECT IF( 返回 Question_id 有建议,那么这将会有很大帮助.

最佳答案

就我个人而言,我会拥有第三个表来保存谁回答了哪些问题的数据。

在我的示例中,我将此表称为“已回答”。

这是我解决这个问题的方法,如果您不想这样做,也许您可​​以从这个示例中收集一些想法:[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);

enter image description here

关于MySQL 查询选择全部,仅找到两个选项之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49267527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com