【发布时间】:2016-11-01 17:00:04
【问题描述】:
我有一个查询,它连接了几个表(3 个或 4 个)并按预期得到结果。
SELECT DISTINCT test_title, stt_id FROM student_tests
LEFT JOIN student_test_answers ON sta_stt_num = stt_id
JOIN tests ON stt_test_id = test_id
WHERE student_test_answer_id IS NULL
我有另一个查询显示另一组数据,基本上是这样的:
SELECT test_id, COUNT(*) AS theCount FROM tests
JOIN test_questions ON test_id= tq_test_id
WHERE type= 'THE_TYPE'
GROUP BY test_id
HAVING theCount = 1
所以基本上我不想在第一个查询中包含第二个查询的结果。 test_id 将是连接字段。
我尝试了 WHERE NOT EXISTS(-上述查询-),但没有返回不正确的结果。我也试过'不在()'
有更好的方法吗?
【问题讨论】:
-
没有看到您的实际查询,我冒昧地猜测您的子查询不相关。
-
请发布您的真实查询、数据样本和预期结果。您的解释不是很清楚,您的查询也不清楚:
test_id= tq_test_id- 我们不知道这些列属于哪个表 -
你是如何尝试
NOT IN()的?如果您想将此查询用作子查询,则不需要结果集中的 theCount。 -
@Philipp 好吧,由于计数/分组,我无法使用它,所以我不得不放弃这个想法。
-
是的,但是如果您想从其他结果集中排除数据,您需要计算什么?您可以保留您的having子句,但不是在别名上,而是在实际计数上(*)
标签: mysql subquery not-exists