select msg.id msgId,msg.test_result_id resultId,test.test_name testName,msg.message_times times,msg.receiver_id postilorId,msg.sender_id userId,postilor.real_name postilorName,msg.createdate createDate,msg.status status from (((select * from newclass.te_message  union (select m1_.id,m1_.body,m1_.title,m1_.test_result_id,m1_.msg_type_id,m1_.sender_id,m1_.receiver_id,0,m1_.status,m1_.createby,m1_.createdate,m1_.lastupdateby,m1_.lastupdatedate from newclass.te_message m1_ where m1_.test_result_id not in (select distinct m0_.test_result_id from newclass.te_message m0_ where m0_.receiver_id=1173587))) msg inner join newclass.te_testresult result on msg.test_result_id=result.id) inner join newclass.te_test test on  result.testid=test.id ) inner join newclass.te_test_postilor postilor on msg.receiver_id=postilor.id;查不出记录,但是取中间的一节却没有问题,
select * from newclass.te_message where receiver_id=1173587  union (select m1_.id,m1_.body,m1_.title,m1_.test_result_id,m1_.msg_type_id,m1_.sender_id,m1_.receiver_id,0,m1_.status,m1_.createby,m1_.createdate,m1_.lastupdateby,m1_.lastupdatedate from newclass.te_message m1_ where m1_.test_result_id not in (select distinct m0_.test_result_id from newclass.te_message m0_ where m0_.receiver_id=1173587));
数据方面没有错误。

解决方案 »

  1.   

    cenlmmx(学海无涯苦作舟) 真的很热心阿,呵呵
      

  2.   

    我把你的语句格式调整了一下:select msg.id msgId,
    msg.test_result_id resultId,
    test.test_name testName,
    msg.message_times times,
    msg.receiver_id postilorId,
    msg.sender_id userId,
    postilor.real_name postilorName,
    msg.createdate createDate,
    msg.status status from (
    select * from newclass.te_message union
    (select
    m1_.id,
    m1_.body,
    m1_.title,
    m1_.test_result_id,
    m1_.msg_type_id,
    m1_.sender_id,
    m1_.receiver_id,
    0,
    m1_.status,
    m1_.createby,
    m1_.createdate,
    m1_.lastupdateby,
    m1_.lastupdatedate
    from newclass.te_message m1_
    where m1_.test_result_id not in (
    select distinct m0_.test_result_id
    from newclass.te_message m0_
    where m0_.receiver_id=1173587)
    )
    ) msg
    inner join newclass.te_testresult result on (msg.test_result_id=result.id)
    inner join newclass.te_test test on  (result.testid=test.id)
    inner join newclass.te_test_postilor postilor on (msg.receiver_id=postilor.id);自己看看吧我觉得很可能是这几个 inner join 导致结果集为空你可以先去掉所有的inner join,查询看看
    如果有结果,就加上一个join
    依次尝试三个join
    应该就能找到问题所在了祝你好运!