多列上没有唯一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;