要能查到正确结果 并且最好充分利用表索引。 
参数表(tbpara)
 MARC_IDX_GRP_NAME    MARC_IDX_GRP    
---------------------------------------
题名                      01                
分类号                    02                
...                   ...索引表(tbdata) 表记录一般再 几十万 左右MARC_REC_NO     MARC_IDX_GRP(索引列)   MARC_IDX_CONT(索引列)
---------------------------------------------
009            01              国际私法
009            02              D922
010            02              TP315
...            ...             ...其中MARC_REC_NO 字段 含义是 每个号就代表一种书  
表 tbdata  就是每种书的描述
现在想多条件组合查询某种书  如届界面上选择条件 : 题名=国际私法  并且 分类号等于 TP315的  看符合这样条件的书存在吗  如果存在返回  MARC_REC_NO  如上数据应该返回009 
谢谢大家  

解决方案 »

  1.   

    参数表(tbpara) 中的數據是固定的嗎?SELECT 
           MARC_REC_NO 
    FROM 
           tbdata 
    WHERE 
           (MARC_IDX_GRP='01' AND MARC_ID_CONT='国际私法') 
    OR 
           (MARC_IDX_GRP='02' AND MARC_ID_CONT='TP315')
      

  2.   

    题名=国际私法 & 分类号等于       TP315
    根據現有的數據,取不出 009 哦
      

  3.   

    不好意思我说错了 以下返回009 就对了
    MARC_REC_NO           MARC_IDX_GRP(索引列)       MARC_IDX_CONT(索引列) 
    --------------------------------------------- 
    009                         01                             国际私法 
    009                         02                             D922 
    009                         02                             I247   
    010                         02                             TP315 
    010                         01                             国际私法 现在想查询符合 题名项为" 国际私法"  并且 分类号 为 "D922" 的.  如果有同时满足条件的 则返回 MARC_REC_NO   009
      

  4.   

    MARC_IDX_GRP列应该建立索引
      

  5.   


    SELECT * FROM tbdata A LEFT JOIN tbdata B 
    ON A.MARC_IDX_GRP='01' AND B.MARC_IDX_GRP='02' AND A.MARC_REC_NO=B.MARC_REC_NO 
    WHERE A.MARC_IDX_CONT='国际私法' AND B.MARC_IDX_CONT='D922'
      

  6.   

    首先谢谢 南京一等一科技SELECT   *   FROM   tbdata   A   LEFT   JOIN   tbdata   B   
    ON   A.MARC_IDX_GRP='01'   AND   B.MARC_IDX_GRP='02'   AND   A.MARC_REC_NO=B.MARC_REC_NO   
    WHERE   A.MARC_IDX_CONT='国际私法'   AND   B.MARC_IDX_CONT='D922'
    ------------------------------------------------------------------------------------
    是这样的   009   010 每个是 一种书   然后我查 看那本书符合
    条件1: MARC_IDX_GRP='01' 并且  MARC_IDX_CONT='国际私法'     
    条件2: MARC_IDX_GRP='02' 并且  MARC_IDX_CONT='D922'009 是符合的   而010 不完全符合  返回009 一个值 
      

  7.   


    SELECT   
                  MARC_REC_NO   
    FROM   
                  tbdata   
    WHERE   
                  (MARC_IDX_GRP='01'   AND   MARC_ID_CONT='国际私法')   
    OR   
                  (MARC_IDX_GRP='02'   AND   MARC_ID_CONT='TP315')
    还有这样写 "or"    是否发挥了相关列 索引的作用呢 ? 我现在没有 大量数据 请大家指点