要能查到正确结果 并且最好充分利用表索引。
参数表(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
谢谢大家
参数表(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
谢谢大家
MARC_REC_NO
FROM
tbdata
WHERE
(MARC_IDX_GRP='01' AND MARC_ID_CONT='国际私法')
OR
(MARC_IDX_GRP='02' AND MARC_ID_CONT='TP315')
根據現有的數據,取不出 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
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'
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 一个值
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" 是否发挥了相关列 索引的作用呢 ? 我现在没有 大量数据 请大家指点