gpt4 book ai didi

php - 比较 MySQL 中的两个子查询

转载 作者:行者123 更新时间:2023-11-29 13:16:57 30 4
gpt4 key购买 nike

我正在寻找对一组相同问题具有相同答案的完全匹配列。他们的答案可能会有所不同,我想找到两个人回答相同的答案,并且我想获得他们唯一的回复 ID。

SELECT 
response
FROM
responses_questions
WHERE (
SELECT
answer
FROM
responses_questions
WHERE
response = '$my_response_id'
GROUP BY
question
ORDER BY
question
ASC
) = (
SELECT
answer
FROM
responses_questions
GROUP BY
question
ORDER BY
question
ASC
)

我完全知道上面的查询不起作用

主要问题是我需要将“条件查询”(由多行组成)与数据库的其余部分进行比较,以返回匹配列组的响应 ID。基本上,对于每个问题,我需要他们的所有答案与我们正在比较的“示例”查询相同。 “比较两个子查询”。

我可以轻松地可视化我需要获取的数据;尽管如此,SQL 并没有考虑我们人类“想象”的内容......

如果我需要提供更多信息,请在下面的评论中告诉我。

编辑:屏幕截图/更多数据

以下是一些示例数据的屏幕截图:

Database Example突出显示的数据是我们在上面查询的“第一”部分中选择的数据。我需要找到所有匹配的数据。

我的预期输出应该是 response 列中的以下数字:57。但不是 6

请记住:将会有数百个问题,因此需要“比较”的行数更多。因此,不要硬编码任何特定的问题编号。

最佳答案

已编辑

我在第一次回答尝试时意识到,我误读了你的问题。我想你是想找出哪些人获得了 100%,对吧?如果我错了请告诉我。

SELECT b.response
FROM responses_questions b
LEFT JOIN responses_questions a
ON a.question = b.question
AND a.answer = b.answer
AND a.response = '$my_response_id'
AND a.response != b.response
GROUP BY b.response
HAVING COUNT(DISTINCT a.question) = COUNT(DISTINCT b.question)

其工作原理是按每个人分组以获得每个人的问题和答案集。我们加入一个只有您所说的“示例”响应 ID 的表格版本,并且我们加入以使问题和答案都匹配。我们使用左连接,以便任何不匹配的条目在 a 表上都将具有 NULL。最后,我们计算每个表中的条目数。 NULL 条目不会添加到计数中,因此如果存在任何不匹配的行,a 表的计数将小于 b 表的计数。

顺便说一句,你的 '$my_response_id' 卡在中间,这让我很警惕。最好使用准备好的查询。我希望您正在清理您的输入。 -- 耶!

编辑

我添加了一项检查,以确保它不会返回 4 的“示例”ID。它应该可以正常工作。我做了一个 sqlfiddle 并得到了 5 和 7,正如你所要求的。

关于php - 比较 MySQL 中的两个子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21343385/

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