gpt4 book ai didi

mysql - 查询两个表中的所有记录

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

我正在为学生考试建立某种系统。有两个表 - 一个包含问题和另一个包含学生 ID 及其答案的问题。

表格问题

+-------------+------------+  
| IdQuestion | QuestionTXT|
+-------------+------------+
| 1 | Q1? |
+-------------+------------+
| 2 | Q2? |
+-------------+------------+
| 3 | Q3? |
+-------------+------------+
| 4 | Q4? |
+-------------+------------+

Table Answers:
+-------------+------------+------------+
| StudentID | IdQuestion | Answer |
+-------------+------------+------------+
| A | 1 | Y |
+-------------+------------+------------+
| A | 2 | N |
+-------------+------------+------------+
| A | 3 | Y |
+-------------+------------+------------+

现在我必须得到学生回答了哪些问题,哪些问题没有回答。

这是一个查询,用于获取学生回答的问题:

SELECT `answ`.`StudentID`
`questions`.`IdQuestion`, `questions`.`QuestionText`, `answ`.`Odgovor`
FROM `questions`
LEFT JOIN `answ` ON `answ`.`IdQuestion` = `questions`.`IdQuestions`
WHERE `answ`.`StudentID` = 'A'

但此查询仅列出有答案的问题(缺少 ID 为 4 的问题)。我需要展示未回答的问题。如何做到这一点?

最佳答案

如果你想要回答和未回答的问题,那么将你的 where 条件移动到子句中

SELECT 
`a`.`StudentID`,
`q`.`IdQuestion`,
`q`.`QuestionTXT`,
`a`.`Answer`
FROM `questions` q
LEFT JOIN `answ` a
ON `a`.`IdQuestion` = `q`.`IdQuestion`
AND `a`.`StudentID` = 'A'

Where 子句从 join 产生的结果集中过滤掉记录,所以在 on 子句中使用你的条件只会过滤你正在加入的表中的记录,不会过滤整个结果集,所以问题没有。 4 还没有回答,但它会在最终结果集中返回,但答案表中有一个空行

See Demo

关于mysql - 查询两个表中的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25493099/

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