select id from tb2 left join tb1 on tb2.id=tb1.id where tb1.id is null

解决方案 »

  1.   

    我试了好多遍,还是查不出来啊
    如果把is null 改成 is not null就会查出两个表共同的,但是不会查出不同的:)
    这是怎么回事啊??
      

  2.   

    发现问题了,是在右边的表中有一个字段是左边表中没有的,结果有where子句中加上了那个限定条件的话,就查不出来了,那怎么解决呢?
      

  3.   

    answer中有sid,pqid,pid。sid为学号,pid为试卷号,pqid为试题号,每答一道题时插入一条记录。
    paper中有pid,pqid.存放的是试卷号为pid的试卷的所有试题。
    我现在想查出学号为sid的学生没有答过的题。怎么不能实现呢,弄了一天了,楼上的高手帮帮我啊,先谢谢啦
      

  4.   

    select aa.pqid from paper aa
    where aa.pqid not  in (select paper.pqid from paper,answer 
                     where paper.pid = answer.pid and
                           paper.pqid= answer.pqid and
                           answer.sid = @sid)
      

  5.   

    上边的答案虽然是正确的 但不是最优下边更好select aa.pqid from paper aa
    where aa.pqid not  in(select pqid from answer where  answer.sid = @sid)
      

  6.   

    mysql不支持子查询啊,不过还是很谢谢冰比冰水冰:)
      

  7.   

    如果那样的话我觉得应该在表answer中增加标识字段 answer(Y/N),default 为N,这样运用起来可能方便些
      

  8.   

    select id from tb2 left join tb1 on tb2.id=tb1.id where tb1.id is null 不能用是因为你要的数据pqid 是在answer中不存在的,绝对不等同与null值
    如果库中有笔资料pqid值为null当然可以用is null 查询出来,但是如果不存在数据肯定is null是不可以的