我正在匹配两个名为 teacher_evaluation_question
和 feedback
的表。
我想要 teacher_evaluation_question
表中的记录,其中 Student_id = 96 且反馈表中不存在该记录
SELECT teacher_evaluation_question.*
FROM teacher_evaluation_question
LEFT JOIN feedback ON feedback.eq_id = teacher_evaluation_question.eq_id
WHERE feedback.student_id = 96 AND feedback.eq_id IS NULL
GROUP BY teacher_evaluation_question.eq_id;
这是表 1 (teacher_evaluation_question):
+-------+-----------------+------------+
| eq_id | question_set | createdate |
+-------+-----------------+------------+
| 3 | QT1/&/QT2/&/QT3 | 2019-04-03 |
| 4 | K1/&/K2/&/K3 | 2019-05-01 |
| 5 | A1/&/B1 | 2019-03-05 |
| 6 | C1/&/C2 | 2019-04-23 |
+-------+-----------------+------------+
这是表 2(反馈):
+----+-------+------------+----------+--------+
| id | eq_id | student_id | question | rating |
+----+-------+------------+----------+--------+
| 13 | 26 | 2 | QT1 | 1 |
| 14 | 26 | 2 | QT2 | 4 |
| 15 | 26 | 2 | QT3 | 2 |
| 16 | 4 | 96 | K1 | 1 |
| 17 | 4 | 96 | K2 | 2 |
| 18 | 4 | 96 | K3 | 1 |
+----+-------+------------+----------+--------+
我期待这样的结果
+-------+-----------------+------------+
| eq_id | question_set | createdate |
+-------+-----------------+------------+
| 3 | QT1/&/QT2/&/QT3 | 2019-04-03 |
| 5 | A1/&/B1 | 2019-03-05 |
| 6 | C1/&/C2 | 2019-04-23 |
+-------+-----------------+------------+
注意:值student_id = 96是一个变量(可能会根据get请求参数$x而改变)
最佳答案
你可以这样做:
SELECT teacher_evaluation_question.*
FROM teacher_evaluation_question
WHERE NOT EXISTS
(SELECT feedback.eq_id FROM feedback
WHERE feedback.eq_id = teacher_evaluation_question.eq_id)
GROUP BY teacher_evaluation_question.eq_id;
关于mysql - 如何使用参数匹配两个表时从第一个表获取空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55844893/