// sql server 还真是不熟悉
//看看行不行!!
select top 1 BOOK_NAME,ISSN, EXPERT_NAME,RANK,PUBLISHER,PAGE,PUBLISH_DATE ,ABSTRACT ,EXPERT_ID from EXPERT,BOOK where EXPERT.EXPERT_ID = BOOK.AUTHOR_ID and (EXPERT_ID,BOOLk_ID) not in (select top 4 EXPERT_ID,BOOK_ID from EXPERT,BOOK where EXPERT.EXPERT_ID = BOOK.AUTHOR_ID order by EXPERT_ID desc) order by EXPERT_ID desc //要不,
select top 1 BOOK_NAME,ISSN, EXPERT_NAME,RANK,PUBLISHER,PAGE,PUBLISH_DATE ,ABSTRACT ,EXPERT_ID from EXPERT,BOOK where EXPERT.EXPERT_ID = BOOK.AUTHOR_ID and (EXPERT_ID+BOOk_ID) not in (select top 4 EXPERT_ID+BOOK_ID from EXPERT,BOOK where EXPERT.EXPERT_ID = BOOK.AUTHOR_ID order by EXPERT_ID desc) order by EXPERT_ID desc

解决方案 »

  1.   

    EXPERT_ID 和BOOk_id 应该都有允许的字符集,随便找个允许的字符集以外的字符把他们连成一个字符串就可以当做一个域来处理了。
    比如:EXPERT_ID 和BOOk_id 都只能是数字或者英数字,那么可以随便找一个其他字符比如“-”来把他们连起来就可以当做是一个域了。
      

  2.   

    to:: jkit(郁闷之堕落的程序员) 
    你说的和我想的很象,是不是视图之类的
    你能给我具体说以下吗??????????
    非常感谢
      

  3.   

    没有明白你的意思,
    建议是:
    1,把复杂的sql语句分开来写,这样不仅你设计起来简单,而且会提高效率。
    2,是不是可以先用相等判断,然后用not进行操作。
      

  4.   

    我说清楚一点
    :我的作的是一个信息管理系统
    现在是查询 我用了一个bean来做的分页
    当时为了提高效率用的sql的分页,就是取出来其中的条数,比如说1-3
    4—6  7-9 
    比如下面是取出来 第7—9个
    select top 3 BOOK_NAME,ISSN, EXPERT_NAME,RANK,PUBLISHER,PAGE,PUBLISH_DATE ,ABSTRACT ,EXPERT_ID from EXPERT,BOOK where EXPERT.EXPERT_ID = BOOK.AUTHOR_ID and EXPERT_ID not in (select top 6 EXPERT_ID from EXPERT,BOOK where EXPERT.EXPERT_ID = BOOK.AUTHOR_ID order by EXPERT_ID desc) order by EXPERT_ID desc  这样全部做完以后呢 ,我又发现这样只要是相同的expert_ID(相同的专家号)的都给去除了
    我的是 expert_ID 和BOOK_NAME 联合做的主健 
    能不能用视图解决呢?!!!!实在不行的话,只能是全部取出来再找出来第多少个了55555555555555555555
      

  5.   

    刚才忽略了一个问题:to:非常感谢hesi726(hesi) 解决了 按照你的方法
    非常感谢非常感谢大家
      

  6.   

    那位大虾给我讲一下(EXPERT_ID+BOOk_ID)
    如果这两个组合起来是查询的对象的花
    现在有个很奇怪的现象7条纪录
    每页显示 1。条(top 1)或者2条(top 2) 或者3条(top3)的时候都是第7条记录(最后一条)显示不出来
    因为主健,所以(EXPERT_ID+BOOk_ID)没有重的阿怎么回事呢
    前辈救命