ElasticSearch使用(嵌套查询、嵌套高亮)

  • 嵌套查询
  • bool 查询
    • must、should关系
      • 1、只有must
      • 2、只有should
      • 3、must和should同时存在
      • 4、怎样设置should必须满足、最小满足条数
  • 查询高亮
    • 1. 普通查询高亮
    • 2. 嵌套查询高亮

嵌套查询

当ES的一条文档中的数据是一个数组,数组中有多个对象时,普通的查询不再适用,比如:

{"_index" : "t_trace_index-2019.08.11.15","_type" : "_doc","_id" : "c8fc4f6f0bcd^1565435961237^3980","_score" : 11.434727,"_routing" : "c8fc4f6f0bcd^1565435961237^3980","_source" : {"type" : "pdoc","calls" : [{"bizParams" : """{"input":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"OPER_ID":"10034571"}}""","callee" : "test-busi-ocrm-yyt","caller" : "test-busi-cust-yyt","rpc" : "CSF_SEC_OPERM_OPIDQQUERY_002","traceId" : "c8fc4f6f0bcd^1565435961237^3980","ts" : 1565507717426},{"traceId" : "c8fc4f6f0bcd^1565435961237^3980","caller" : "test-busi-cust-yyt","rpc" : "ocrm_ICbossCSV_idCheck","callee" : "test-busi-ocrm-yyt","ts" : 1565507717915,"bizParams" : """{"input":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"RSP_JSON_STR":"{\"IdCheck\":{\"Seq\":\"10020190811151517510040\",\"CustomerName\":\"786382D36B599DF8D3C312272A75AD81\",\"IDCardType\":\"04\",\"IDCardNum\":\"99425ED800E46883C131C544E9F8BAD9\",\"ChannelId\":\"210000000100001\",\"MsOpcode\":\"C8000\"}}"}}"""},{"traceId" : "c8fc4f6f0bcd^1565435961237^3980","caller" : "test-busi-rule-yyt","rpc" : "cust_IOneCardFiveUserCSV_idCheck","callee" : "test-busi-cust-yyt","ts" : 1565507717985,"bizParams" : """{"input":{"CERT_CODE":"523453","CODE_TYPE":"CM_CERT_TYPE_CHECKCODE","CUST_NAME":"对方八年","CERT_TYPE":"3","CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]}}}"""}],"id" : "c8fc4f6f0bcd^1565435961237^3980","timestamp" : 1565507717426,"trace_join" : {"name" : "pdoc"}}
}

这时候就需要使用嵌套查询(nested)

bool 查询

查询字句 说明 类型
must 文档必须匹配must查询条件(AND) 数组
should 匹配should的一个或多个(OR) 数组
must_not 文档不能匹配该查询条件 数组
filter 过滤,文档需要匹配过滤条件,功能和must一样,不过filter不参与评分 数组

must、should关系

1、只有must

must中条件必须满足

2、只有should

没有must,只有should,那么should中必须至少匹配一个才行

3、must和should同时存在

如果must中条件匹配,那么should可以不匹配,所以如果查询语句中must、should同时存在,又不设置should最小满足条数,那么should条件有时是不会生效的

项目使用场景:
快速定位功能,需要输入关键字和各种过滤条件,关键字有三种类型,查询时,每个关键字都需要搜索一遍,考虑的是关键字使用should,只要有一种关键字类型满足即可,过滤条件使用must,需要全都满足,在没有指定should最小满足条数时,发现关键字可以输入任意值,只要过滤条件满足就可以查询出结果,关键字没有起作用,在增加should最小满足条数为1之后,设置should至少满足一条,查询结果正确

4、怎样设置should必须满足、最小满足条数

可以设置should中必须匹配多少个,参数"minimum_should_match": "1",也可以设置匹配百分比"minimum_should_match":75%

Java代码

BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
boolQueryBuilder.should(QueryBuilders.nestedQuery("calls", QueryBuilders.boolQuery().must(QueryBuilders.matchPhraseQuery("calls.bizParams", keyword)), ScoreMode.Avg));
boolQueryBuilder.should(QueryBuilders.nestedQuery("calls", QueryBuilders.boolQuery().must(QueryBuilders.termQuery("calls.rpc", keyword)), ScoreMode.Avg));
boolQueryBuilder.should(QueryBuilders.nestedQuery("calls", QueryBuilders.boolQuery().must(QueryBuilders.termQuery("calls.traceId", keyword)), ScoreMode.Avg));
// 设置should必须匹配多少条
boolQueryBuilder.minimumShouldMatch(1);

DSL查询语句

"should": [
{"nested": {"query": {"bool": {"must": [{"match_phrase": {"calls.bizParams": {"query": "input","slop": 0,"zero_terms_query": "NONE","boost": 1}}}],"adjust_pure_negative": true,"boost": 1}},"path": "calls","ignore_unmapped": false,"score_mode": "avg","boost": 1,}
},
{"nested": {"query": {"bool": {"must": [{"term": {"calls.rpc": {"value": "input","boost": 1}}}],"adjust_pure_negative": true,"boost": 1}},"path": "calls","ignore_unmapped": false,"score_mode": "avg","boost": 1}
},
{"nested": {"query": {"bool": {"must": [{"term": {"calls.traceId": {"value": "input","boost": 1}}}],"adjust_pure_negative": true,"boost": 1}},"path": "calls","ignore_unmapped": false,"score_mode": "avg","boost": 1}
}
],
"adjust_pure_negative": true,
"minimum_should_match": "1",
"boost": 1

设置should中三个条件至少有一个匹配才行

查询高亮

1. 普通查询高亮

java代码

HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.field("calls.bizParams");
//高亮标签
highlightBuilder.preTags("<em>").postTags("</em>");
//高亮内容长度
highlightBuilder.fragmentSize(200);
// 创建并设置SearchSourceBuilder对象
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.highlighter(highlightBuilder);

DSL查询语句

{"from": 0,"size": 5000,"timeout": "2000ms","query": {"bool": {"should": [{"nested": {"query": {"bool": {"must": [{"match_phrase": {"calls.bizParams": {"query": "cb47bea067fc^1565266299866^564","slop": 0,"zero_terms_query": "NONE","boost": 1}}}],"adjust_pure_negative": true,"boost": 1}},"path": "calls","ignore_unmapped": false,"score_mode": "none","boost": 1}}],"adjust_pure_negative": true,"boost": 1,"minimum_should_match": "1"}},"highlight": {"pre_tags": ["<em>"],"post_tags": ["</em>"],"fragment_size": 200,"fields": {"calls.traceId": {}}}
}

2. 嵌套查询高亮

在嵌套查询时,如果使用普通高亮查询,会有一个问题,因为一个文档数据记录中可能会有多个对象,所以一条文档可能会有多个满足高亮的字段,而普通高亮只会把高亮的字段在数组中罗列出来,并不知道一条高亮字段属于文档中的哪个对象

普通DSL查询语句

{"from": 0,"size": 5000,"timeout": "2000ms","query": {"bool": {"should": [{"nested": {"query": {"bool": {"must": [{"match_phrase": {"calls.traceId": {"query": "cb47bea067fc^1565266299866^564","slop": 0,"zero_terms_query": "NONE","boost": 1}}}],"adjust_pure_negative": true,"boost": 1}},"path": "calls","ignore_unmapped": false,"score_mode": "none","boost": 1}}],"adjust_pure_negative": true,"boost": 1,"minimum_should_match": "1"}},"highlight": {"pre_tags": ["<em>"],"post_tags": ["</em>"],"fragment_size": 200,"fields": {"calls.traceId": {}}}
}

查询结果:

"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 2.0,"hits" : [{"_index" : "t_trace_index-2019.08.08.20","_type" : "_doc","_id" : "cb47bea067fc^1565266299866^564","_score" : 2.0,"_routing" : "cb47bea067fc^1565266299866^564","_source" : {"calls" : [{"traceId" : "cb47bea067fc^1565266299866^564"},{"traceId" : "cb47bea067fc^1565266299866^564"}],"id" : "cb47bea067fc^1565266299866^564","timestamp" : 1565268881001,"trace_join" : {"name" : "pdoc"},"type" : "pdoc"},"highlight" : {"calls.traceId" : ["<em>cb47bea067fc^1565266299866^564</em>","<em>cb47bea067fc^1565266299866^564</em>"]}}]
}

这里对traceId字段使用了高亮查询,可以看到这里高亮匹配到了两条,而除了高亮字段外无任何信息,无法知道高亮语句属于文档数组中的哪个对象,这种高亮方法只适用于非嵌套查询,一条文档中一个对象,高亮字段只会有一个

嵌套查询高亮代码

HighlightBuilder highlightBuilder = new HighlightBuilder();
// 高亮字段
highlightBuilder.field("calls.bizParams");
// 高亮标签
highlightBuilder.preTags("<em>").postTags("</em>");
//highlightBuilder.order("score");
// 高亮内容长度
highlightBuilder.fragmentSize(200);
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
// 嵌套查询使用高亮
boolQueryBuilder.should(QueryBuilders.nestedQuery("calls", QueryBuilders.boolQuery().must(QueryBuilders.matchPhraseQuery("calls.bizParams", keyword)), ScoreMode.Avg).innerHit(new InnerHitBuilder().setHighlightBuilder(highlightBuilder)));

嵌套查询高亮DSL查询语句

"query": {"bool": {"must": [{"nested": {"query": {"bool": {"must": [{"term": {"calls.traceId": {"value": "c8fc4f6f0bcd^1565435961237^3980","boost": 1}}}],"adjust_pure_negative": true,"boost": 1}},"path": "calls","ignore_unmapped": false,"score_mode": "avg","boost": 1}}],"filter": [{"nested": {"query": {"range": {"calls.ts": {"from": 1564589746707,"to": 1565590046000,"include_lower": true,"include_upper": true,"boost": 1}}},"path": "calls","ignore_unmapped": false,"score_mode": "none","boost": 1}}],"should": [{"nested": {"query": {"bool": {"must": [{"match_phrase": {"calls.bizParams": {"query": "input","slop": 0,"zero_terms_query": "NONE","boost": 1}}}],"adjust_pure_negative": true,"boost": 1}},"path": "calls","ignore_unmapped": false,"score_mode": "avg","boost": 1,"inner_hits": {"ignore_unmapped": false,"from": 0,"size": 3,"version": false,"seq_no_primary_term": false,"explain": false,"track_scores": false,"highlight": {"pre_tags": ["<em>"],"post_tags": ["</em>"],"fragment_size": 200,"fields": {"calls.bizParams": {}}}}}},{"nested": {"query": {"bool": {"must": [{"term": {"calls.rpc": {"value": "input","boost": 1}}}],"adjust_pure_negative": true,"boost": 1}},"path": "calls","ignore_unmapped": false,"score_mode": "avg","boost": 1}},{"nested": {"query": {"bool": {"must": [{"term": {"calls.traceId": {"value": "input","boost": 1}}}],"adjust_pure_negative": true,"boost": 1}},"path": "calls","ignore_unmapped": false,"score_mode": "avg","boost": 1}}],"adjust_pure_negative": true,"minimum_should_match": "1","boost": 1}
}

查询结果,为了减小篇幅,删除无意义字段:

{"took" : 42,"timed_out" : false,"_shards" : {"total" : 430,"successful" : 430,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 11.434727,"hits" : [{"_index" : "t_trace_index-2019.08.11.15","_type" : "_doc","_id" : "c8fc4f6f0bcd^1565435961237^3980","_score" : 11.434727,"_routing" : "c8fc4f6f0bcd^1565435961237^3980","_source" : {"type" : "pdoc","calls" : [{"bizParams" : """{"input":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"OPER_ID":"10034571"}}""","rpc" : "CSF_SEC_OPERM_OPIDQQUERY_002","traceId" : "c8fc4f6f0bcd^1565435961237^3980","ts" : 1565507717426},{"traceId" : "c8fc4f6f0bcd^1565435961237^3980","rpc" : "ocrm_ICbossCSV_idCheck","ts" : 1565507717915,"bizParams" : """{"input":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"RSP_JSON_STR":"{\"IdCheck\":{\"Seq\":\"10020190811151517510040\",\"CustomerName\":\"786382D36B599DF8D3C312272A75AD81\",\"IDCardType\":\"04\",\"IDCardNum\":\"99425ED800E46883C131C544E9F8BAD9\",\"ChannelId\":\"210000000100001\",\"MsOpcode\":\"C8000\"}}"}}"""},{"traceId" : "c8fc4f6f0bcd^1565435961237^3980","rpc" : "cust_IOneCardFiveUserCSV_idCheck","ts" : 1565507717985,"bizParams" : """{"input":{"CERT_CODE":"523453","CODE_TYPE":"CM_CERT_TYPE_CHECKCODE","CUST_NAME":"对方八年","CERT_TYPE":"3","CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]}}}"""},{"traceId" : "c8fc4f6f0bcd^1565435961237^3980","rpc" : "cust_IBackListCSV_queryBlackInfo","bizParams" : """{"input":{"CERT_CODE":"523453","START_NUM":-1,"CERT_TYPE":3,"PARTY_NAME":"","END_NUM":-1,"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]}}}""","ts" : 1565507717360},{"traceId" : "c8fc4f6f0bcd^1565435961237^3980","rpc" : "cust_IRealNameCSV_getRealNameCountByPhoneOrIden","ts" : 1565507717409,"bizParams" : """{"input":{"CERT_CODE":"523453","BILL_ID":"","CERT_TYPE":"3","CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]}}}"""},{"traceId" : "c8fc4f6f0bcd^1565435961237^3980","rpc" : "CSF_RULE_COMMON_RULESCHECK_001","ts" : 1565507717366,"bizParams" : """{"input":{"RULE_MAP":{"ORDER_OBJ_MAP":{"CUST_DC":{"CUST_CERT_TYPE":"3","CUST_NAME":"对方八年","CUST_CERT_CODE":"523453"}}},"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"RULE_IDS":"100001049"}}"""},{"traceId" : "c8fc4f6f0bcd^1565435961237^3980","rpc" : "CSF_RULE_COMMON_RULESCHECK_001","ts" : 1565507717992,"bizParams" : """{"input":{"RULE_MAP":{"ORDER_OBJ_MAP":{"CUST_DC":{"CUST_CERT_TYPE":"3","CUST_NAME":"对方八年","CUST_CERT_CODE":"523453"}}},"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"RULE_IDS":"100060110"}}"""},{"traceId" : "c8fc4f6f0bcd^1565435961237^3980","rpc" : "/web-crm/","ts" : 1565507718017}],"id" : "c8fc4f6f0bcd^1565435961237^3980","timestamp" : 1565507717426,"trace_join" : {"name" : "pdoc"}},"inner_hits" : {"calls" : {"hits" : {"total" : {"value" : 7,"relation" : "eq"},"max_score" : 9.85075E-6,"hits" : [{"_index" : "t_trace_index-2019.08.11.15","_type" : "_doc","_id" : "c8fc4f6f0bcd^1565435961237^3980","_nested" : {"field" : "calls","offset" : 0},"_score" : 9.85075E-6,"_source" : {"bizParams" : """{"input":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"OPER_ID":"10034571"}}""","rpc" : "CSF_SEC_OPERM_OPIDQQUERY_002","traceId" : "c8fc4f6f0bcd^1565435961237^3980","ts" : 1565507717426},"highlight" : {"calls.bizParams" : ["""{"<em>input</em>":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"OPER_ID":"10034571"}}"""]}},{"_index" : "t_trace_index-2019.08.11.15","_type" : "_doc","_id" : "c8fc4f6f0bcd^1565435961237^3980","_nested" : {"field" : "calls","offset" : 1},"_score" : 9.85075E-6,"_source" : {"traceId" : "c8fc4f6f0bcd^1565435961237^3980","rpc" : "ocrm_ICbossCSV_idCheck","ts" : 1565507717915,"bizParams" : """{"input":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"RSP_JSON_STR":"{\"IdCheck\":{\"Seq\":\"10020190811151517510040\",\"CustomerName\":\"786382D36B599DF8D3C312272A75AD81\",\"IDCardType\":\"04\",\"IDCardNum\":\"99425ED800E46883C131C544E9F8BAD9\",\"ChannelId\":\"210000000100001\",\"MsOpcode\":\"C8000\"}}"}}"""},"highlight" : {"calls.bizParams" : ["""{"<em>input</em>":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"RSP_JSON_STR":"{\"IdCheck\":{\"Seq\":\"10020190811151517510040\",\"CustomerName\":\"786382D36B599DF8D3C312272A75AD81\",\"IDCardType\":\"04\",\""""]}},{"_index" : "t_trace_index-2019.08.11.15","_type" : "_doc","_id" : "c8fc4f6f0bcd^1565435961237^3980","_nested" : {"field" : "calls","offset" : 2},"_score" : 9.85075E-6,"_source" : {"traceId" : "c8fc4f6f0bcd^1565435961237^3980","rpc" : "cust_IOneCardFiveUserCSV_idCheck","ts" : 1565507717985,"bizParams" : """{"input":{"CERT_CODE":"523453","CODE_TYPE":"CM_CERT_TYPE_CHECKCODE","CUST_NAME":"对方八年","CERT_TYPE":"3","CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]}}}"""},"highlight" : {"calls.bizParams" : ["""{"<em>input</em>":{"CERT_CODE":"523453","CODE_TYPE":"CM_CERT_TYPE_CHECKCODE","CUST_NAME":"对方八年","CERT_TYPE":"3","CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]}}}"""]}}]}}}}]}
}

这里对bizParams字段使用嵌套高亮查询,注意看这里的结果和前面查询结果的区别,可以看到查询结果中有inner_hits这个字段

"inner_hits" : {"calls" : {"hits" : {"total" : {"value" : 7,"relation" : "eq"},"max_score" : 9.85075E-6,"hits" : [{"_index" : "t_trace_index-2019.08.11.15","_type" : "_doc","_id" : "c8fc4f6f0bcd^1565435961237^3980","_nested" : {"field" : "calls","offset" : 0},"_score" : 9.85075E-6,"_source" : {"bizParams" : """{"input":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"OPER_ID":"10034571"}}""","rpc" : "CSF_SEC_OPERM_OPIDQQUERY_002","traceId" : "c8fc4f6f0bcd^1565435961237^3980","ts" : 1565507717426},"highlight" : {"calls.bizParams" : ["""{"<em>input</em>":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"OPER_ID":"10034571"}}"""]}},{"_index" : "t_trace_index-2019.08.11.15","_type" : "_doc","_id" : "c8fc4f6f0bcd^1565435961237^3980","_nested" : {"field" : "calls","offset" : 1},"_score" : 9.85075E-6,"_source" : {"traceId" : "c8fc4f6f0bcd^1565435961237^3980","rpc" : "ocrm_ICbossCSV_idCheck","ts" : 1565507717915,"bizParams" : """{"input":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"RSP_JSON_STR":"{\"IdCheck\":{\"Seq\":\"10020190811151517510040\",\"CustomerName\":\"786382D36B599DF8D3C312272A75AD81\",\"IDCardType\":\"04\",\"IDCardNum\":\"99425ED800E46883C131C544E9F8BAD9\",\"ChannelId\":\"210000000100001\",\"MsOpcode\":\"C8000\"}}"}}"""},"highlight" : {"calls.bizParams" : ["""{"<em>input</em>":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"RSP_JSON_STR":"{\"IdCheck\":{\"Seq\":\"10020190811151517510040\",\"CustomerName\":\"786382D36B599DF8D3C312272A75AD81\",\"IDCardType\":\"04\",\""""]}},{"_index" : "t_trace_index-2019.08.11.15","_type" : "_doc","_id" : "c8fc4f6f0bcd^1565435961237^3980","_nested" : {"field" : "calls","offset" : 2},"_score" : 9.85075E-6,"_source" : {"traceId" : "c8fc4f6f0bcd^1565435961237^3980","rpc" : "cust_IOneCardFiveUserCSV_idCheck","ts" : 1565507717985,"bizParams" : """{"input":{"CERT_CODE":"523453","CODE_TYPE":"CM_CERT_TYPE_CHECKCODE","CUST_NAME":"对方八年","CERT_TYPE":"3","CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]}}}"""},"highlight" : {"calls.bizParams" : ["""{"<em>input</em>":{"CERT_CODE":"523453","CODE_TYPE":"CM_CERT_TYPE_CHECKCODE","CUST_NAME":"对方八年","CERT_TYPE":"3","CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]}}}"""]}}]}}
}

这里面就是高亮命中的信息,每有一条高亮数据命中,在inner_hitshit数组中,都会有一条命中对象,相当于把数组中命中的对象字段高亮之后生成了一个新的对象,包括:

位置信息:

"_nested" : {"field" : "calls","offset" : 0
}

offset:高亮命中数据在查询命中结果中的位置,这里表示高亮对象在查询结果中排在第一位,就可以根据这个位置对原来对象中的属性进行修改,例如使用高亮后字段替换原来的字段

高亮后的字段:

"highlight" : {"calls.bizParams" : ["""{"<em>input</em>":{"CONTROL_IN_PARAM":{"DATA_STATE":["DATA_ALL"]},"OPER_ID":"10034571"}}"""]
}


等其他的信息,这个可以按需了解

ElasticSearch使用(嵌套查询、嵌套高亮)相关推荐

  1. MyBatis的关联映射之 一对一(嵌套查询/嵌套结果)

    关联映射概述 在实际的开发中,对数据库的操作常常会涉及多张表,这在面向对象中就涉及了对象与对象之间的关联关系 针对多表之间的操作, MyBatis 提供了关联映射,通过关联映射就可以很好地处理对象与对 ...

  2. java查询mongodb 嵌套,查询嵌套文件mongoDB

    这是我在文本模式下的示例MongoDB 我想检索每个用户的数据 . 我也想要_id因为在一个完整的文档中它有几个具有相似结构的_id . 我尝试使用unwind运算符,因为该对象包含嵌套数组,如下所示 ...

  3. sql镶嵌查询_【SQL】嵌套查询与子查询

    前言 sql的嵌套查询可以说是sql语句中比较复杂的一部分,但是掌握好了的话就可以提高查询效率.下面将介绍带in的子查询.带比较运算符的子查询.带any/all的子查询.带exists的子查询以及基于 ...

  4. SQL连接查询和嵌套查询详解

    连接查询 若一个查询同时涉及两个或两个以上的表,则称之为连接查询.连接查询是数据库中最最要的查询, 包括: 1.等值连接查询 2.自然连接查询 3.非等值连接查询 4.自身连接查询 5.外连接查询 6 ...

  5. html 分页_MySQL——优化嵌套查询和分页查询

    Java识堂,一个高原创,高收藏,有干货的微信公众号,欢迎关注 优化嵌套查询 嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中.嵌套查询写 ...

  6. Mysql中嵌套查询和连接查询的区别

    一.嵌套查询 嵌套查询我们以mybatis中的嵌套查询举例: 1.1.创建数据库 CREATE TABLE `teacher` (`id` INT(10) NOT NULL,`name` VARCHA ...

  7. 2.4.3 Mybatis 高级查询, 复杂映射, 返回主键, 动态SQL if, set, foreach, 核心配置文件深入,plugins标签, 多表查询, 嵌套查询

    目录 Mybatis 复杂映射&配置文件深入 一 Mybatis高级查询 1.1 ResutlMap属性 1.2 多条件查询(三种) 1.3 模糊查询 二 Mybatis映射文件深入 2.1 ...

  8. 数据库作业6——嵌套查询

    3.4.3 嵌套查询 1. 带有in谓词的子查询 2. 带有比较运算符的子查询 3. 带有any(some)或all谓词的子查询 4. 带有exists谓词的子查询 3.4.3 嵌套查询 嵌套查询:将 ...

  9. SQL中的连接查询与嵌套查询

    连接查询 若一个查询同时涉及两个或两个以上的表,则称之为连接查询.连接查询是数据库中最最要的查询, 包括: 1.等值连接查询 2.自然连接查询 3.非等值连接查询 4.自身连接查询 5.外连接查询 6 ...

最新文章

  1. ios中tableview网封装(viewcontroller封装)常用的
  2. 人工智能应用需要高可信性(180806)
  3. Creating my own systemd service files on Fedora 16(x86_64)
  4. java 隐藏文件_java-如何仅列出jtree中的非隐藏文件和非系...
  5. linux怎样服务,如何在linux添加服务
  6. 谈了千百遍的缓存数据的一致性问题
  7. 为什么声明性编码使您成为更好的程序员
  8. Three.js制作360度全景图
  9. abap 添加alv上的工具栏的按钮_Excel里的置顶功能——快速访问工具栏
  10. MyBatis 为什么需要通用 Mapper ? 1
  11. 工科神器matlab高校遭禁用,网友:关我p事,python可取而代之
  12. 【转】处事22计、心态24条、伤心50句、礼仪73、学会长大20!
  13. 网页中怎样制作虚线表格
  14. python和lua哪个有前途_python和lua数据类型的比较
  15. Java实现简易图形编辑系统
  16. ADPCM 音频压缩算法
  17. ARM9——五级流水线结构,以及PC指针
  18. 【学习笔记】彻底删除2345输入法
  19. 利用Python实现摄像头实时换脸
  20. matlab中的代数环问题及其消除方法,Matlab中的代数环问题及其消除方法

热门文章

  1. w10电脑c盘满了怎么清理_win10系统如何清理c盘空间容量
  2. 〖经典怀念〗新白娘子传奇MV之青姐17部完整原版下载
  3. java 3行4列二维数组_输入一个3行4列矩阵到二维数组中,并打印出来
  4. 运营干货分享 | 公众号运营需要具备什么能力以及引流工具渠道吗?
  5. 区块链知识汇总练习——私有链、公有链、联盟链、元宇宙、AR技术
  6. 187、商城业务-检索服务-页面排序功能
  7. 图像分类的技能包及每一项的实验验证
  8. 基于Java+MySQL 实现(Web)日程管理系统【100010222】
  9. 简书爬ajax接口获取csrf,Python爬取简书主页信息
  10. 计算机李宁,李宁的个人主页-西北工业大学教师个人主页