多列上没有唯一id的MYSQL联接表
我有以下表格: 主表:多列上没有唯一id的MYSQL联接表,mysql,join,Mysql,Join,我有以下表格: 主表: TestNumber PassageNumber QuestionNumber 1 1 1 1 1 2 1 1 3 1 2 1 1 2 2 1 2
TestNumber PassageNumber QuestionNumber
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
表儿童:
TestNumber PassageNumber QuestionNumber User SelectedAnswer
1 1 1 X A
1 2 2 X B
我想根据测试编号和用户在主表中显示不在子表中的数据。因此,我要查找的结果如下,其中主表中的行不是子表中的行:
TestNumber PassageNumber QuestionNumber
1 1 2
1 1 3
1 2 1
1 2 3
我尝试了以下查询和变体,但没有成功:
SELECT a.passagenumber, a.questionnumber FROM Main a left outer join
Child b on a.testnumber=b.testnumber where b.user = 'X'
and b.testnumber=1 and a.testnumber=1 and b.selectedanswer is not null
我知道如果我有一个唯一的id,这将很容易解决,但在这种情况下,这不是一个选项。任何帮助都将不胜感激。我想你不能在这里使用
SELECT a.passagenumber, a.questionnumber FROM Main a
where ( a.testnumber, a.passagenumber, a.questionumber)
not in ( select b.testnumber, b.passagenumber, b.questionumber
from Child b where b.user = 'X' )
是否可以使用左联接将三个字段上的表联接起来,并且子表值为null
SELECT p.TestNumber
,p.PassageNumber
,p.QuestionNumber
FROM Parent p
LEFT JOIN Child c ON c.TestNumber = p.TestNumber
AND c.PassageNumber = p.PassageNumber
AND c.QuestionNumber = p.QuestionNumber
AND c.[User] = 'X'
WHERE c.TestNumber IS NULL;