原文地址:http://shiyanjun.cn/archives/78.html

Cloudera公司已经推出了基于Hadoop平台的查询统计分析工具Impala,只要熟悉SQL,就可以熟练地使用Impala来执行查询与分析的功能。不过Impala的SQL和关系数据库的SQL还是有一点微妙地不同的。
下面,我们设计一个表,通过该表中的数据,来将SQL查询与统计的语句,使用Solr查询的方式来与SQL查询对应。这个翻译的过程,是非常有趣的,你可以看到Solr一些很不错的功能。
用来示例的表结构设计,如图所示:

下面,我们通过给出一些SQL查询统计语句,然后对应翻译成Solr查询语句,然后对比结果。

查询对比

  • 条件组合查询

SQL查询语句:

1 SELECT log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_type
2 FROM v_i_event
3 WHERE prov_id = 1 AND net_type = 1 AND area_id = 10304 AND time_type = 1 AND time_id >= 20130801 AND time_id <= 20130815
4 ORDER BY log_id LIMIT 10;

查询结果,如图所示:

Solr查询URL:

1 http://slave1:8888/solr-cloud/i_event/select?q=*:*&fl=log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_type&fq=prov_id:1 AND net_type:1 AND area_id:10304 AND time_type:1 AND time_id:[20130801 TO 20130815]&sort=log_id asc&start=0&rows=10

查询结果,如下所示:

<response><lst name="responseHeader"><int name="status">0</int><int name="QTime">4</int></lst><result name="response" numFound="77" start="0"><doc><int name="log_id">6827</int><long name="start_time">1375072117</long><long name="end_time">1375081683</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10304</int><int name="idt_id">11002</int><int name="cnt">0</int><int name="net_type">1</int></doc><doc><int name="log_id">6827</int><long name="start_time">1375072117</long><long name="end_time">1375081683</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10304</int><int name="idt_id">11000</int><int name="cnt">0</int><int name="net_type">1</int></doc><doc><int name="log_id">6851</int><long name="start_time">1375142158</long><long name="end_time">1375146391</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10304</int><int name="idt_id">14001</int><int name="cnt">5</int><int name="net_type">1</int></doc><doc><int name="log_id">6851</int><long name="start_time">1375142158</long><long name="end_time">1375146391</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10304</int><int name="idt_id">11002</int><int name="cnt">23</int><int name="net_type">1</int></doc><doc><int name="log_id">6851</int><long name="start_time">1375142158</long><long name="end_time">1375146391</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10304</int><int name="idt_id">10200</int><int name="cnt">55</int><int name="net_type">1</int></doc><doc><int name="log_id">6851</int><long name="start_time">1375142158</long><long name="end_time">1375146391</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10304</int><int name="idt_id">14000</int><int name="cnt">4</int><int name="net_type">1</int></doc><doc><int name="log_id">6851</int><long name="start_time">1375142158</long><long name="end_time">1375146391</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10304</int><int name="idt_id">11000</int><int name="cnt">1</int><int name="net_type">1</int></doc><doc><int name="log_id">6851</int><long name="start_time">1375142158</long><long name="end_time">1375146391</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10304</int><int name="idt_id">10201</int><int name="cnt">31</int><int name="net_type">1</int></doc><doc><int name="log_id">6851</int><long name="start_time">1375142158</long><long name="end_time">1375146391</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10304</int><int name="idt_id">8002</int><int name="cnt">8</int><int name="net_type">1</int></doc><doc><int name="log_id">6851</int><long name="start_time">1375142158</long><long name="end_time">1375146391</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10304</int><int name="idt_id">8000</int><int name="cnt">30</int><int name="net_type">1</int></doc></result>
</response>

对比上面结果,除了根据idt_id排序方式不同以外(Impala是升序,Solr是降序),其他是相同的。

  • 单个字段分组统计

SQL查询语句:

1 SELECT prov_id, SUM(cnt) AS sum_cnt, AVG(cnt) AS avg_cnt, MAX(cnt) AS max_cnt, MIN(cnt) ASmin_cnt, COUNT(cnt) AS count_cnt
2 FROM v_i_event
3 GROUP BY prov_id;

查询结果,如图所示:

Solr查询URL:

1 http://slave1:8888/solr-cloud/i_event/select?q=*:*&stats=true&stats.field=cnt&rows=0&indent=true

查询结果,如下所示:

<response><lst name="responseHeader"><int name="status">0</int><int name="QTime">2</int></lst><result name="response" numFound="4088" start="0"></result><lst name="stats"><lst name="stats_fields"><lst name="cnt"><double name="min">0.0</double><double name="max">1258.0</double><long name="count">4088</long><long name="missing">0</long><double name="sum">32587.0</double><double name="sumOfSquares">9170559.0</double><double name="mean">7.971379647749511</double><double name="stddev">46.69344567709268</double><lst name="facets" /></lst></lst></lst>
</response>

对比查询结果,Solr提供了更多的统计项,如标准差(stddev)等,与SQL查询结果是一致的。

  • IN条件查询

SQL查询语句:

1 SELECT log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_typ
2 FROM v_i_event
3 WHERE prov_id = 1 AND net_type = 1 AND city_id IN(106,103) AND idt_idIN(12011,5004,6051,6056,8002) AND time_type = 1 AND time_id >= 20130801 AND time_id <= 20130815
4 ORDER BY log_id, start_time DESC LIMIT 10;

查询结果,如图所示:

Solr查询URL:

http://slave1:8888/solr-cloud/i_event/select?q=*:*&fl=log_id,start_time,end_time,prov_id,city_id,area_id,idt_id, cnt,net_type&fq=prov_id:1 AND net_type:1 AND (city_id:106 OR city_id:103) AND (idt_id:12011 OR idt_id:5004 OR idt_id:6051 OR idt_id:6056 OR idt_id:8002) AND time_type:1 AND time_id:[20130801 TO 20130815]&sort=log_id asc ,start_time desc&start=0&rows=10

或者:

http://slave1:8888/solr-cloud/i_event/select?q=*:*&fl=log_id,start_time,end_time,prov_id,city_id,area_id,idt_id, cnt ,net_type&fq=prov_id:1&fq=net_type:1&fq=(city_id:106 OR city_id:103)&fq=(idt_id:12011 OR idt_id:5004 OR idt_id:6051 OR idt_id:6056 OR idt_id:8002)&fq=time_type:1&fq=time_id:[20130801 TO 20130815]&sort=log_id asc,start_time desc&start=0&rows=10

查询结果,如下所示:

<response><lst name="responseHeader"><int name="status">0</int><int name="QTime">6</int></lst><result name="response" numFound="63" start="0"><doc><int name="log_id">6553</int><long name="start_time">1374054184</long><long name="end_time">1374054254</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10307</int><int name="idt_id">12011</int><int name="cnt">0</int><int name="net_type">1</int></doc><doc><int name="log_id">6553</int><long name="start_time">1374054184</long><long name="end_time">1374054254</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10307</int><int name="idt_id">5004</int><int name="cnt">2</int><int name="net_type">1</int></doc><doc><int name="log_id">6555</int><long name="start_time">1374055060</long><long name="end_time">1374055158</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">70104</int><int name="idt_id">5004</int><int name="cnt">3</int><int name="net_type">1</int></doc><doc><int name="log_id">6555</int><long name="start_time">1374055060</long><long name="end_time">1374055158</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">70104</int><int name="idt_id">12011</int><int name="cnt">0</int><int name="net_type">1</int></doc><doc><int name="log_id">6595</int><long name="start_time">1374292508</long><long name="end_time">1374292639</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10307</int><int name="idt_id">5004</int><int name="cnt">4</int><int name="net_type">1</int></doc><doc><int name="log_id">6611</int><long name="start_time">1374461233</long><long name="end_time">1374461245</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10307</int><int name="idt_id">5004</int><int name="cnt">1</int><int name="net_type">1</int></doc><doc><int name="log_id">6612</int><long name="start_time">1374461261</long><long name="end_time">1374461269</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10307</int><int name="idt_id">5004</int><int name="cnt">1</int><int name="net_type">1</int></doc><doc><int name="log_id">6612</int><long name="start_time">1374461261</long><long name="end_time">1374461269</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10307</int><int name="idt_id">12011</int><int name="cnt">0</int><int name="net_type">1</int></doc><doc><int name="log_id">6613</int><long name="start_time">1374461422</long><long name="end_time">1374461489</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10307</int><int name="idt_id">6056</int><int name="cnt">1</int><int name="net_type">1</int></doc><doc><int name="log_id">6613</int><long name="start_time">1374461422</long><long name="end_time">1374461489</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10307</int><int name="idt_id">6051</int><int name="cnt">1</int><int name="net_type">1</int></doc></result>
</response>

对比查询结果,是一致的。

  • 开区间范围条件查询

SQL查询语句:

1 SELECT log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_type
2 FROM v_i_event
3 WHERE net_type = 1 AND idt_id IN(12011,5004,6051,6056,8002) AND time_type = 1 ANDstart_time >= 1373598465 AND end_time < 1374055254
4 ORDER BY log_id, start_time, idt_id DESC LIMIT 30;

查询结果,如图所示:

Solr查询URL:

1 http://slave1:8888/solr-cloud/i_event/select?q=*:*&fl=log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_type&fq=net_type:1 AND (idt_id:12011 OR idt_id:5004 OR idt_id:6051 OR idt_id:6056 OR idt_id:8002) AND time_type:1 AND start_time:[1373598465 TO 1374055254]&fq =-start_time:1374055254&sort=log_id asc,start_time asc,idt_id desc&start=0&rows=30

1 http://slave1:8888/solr-cloud/i_event/select?q=*:*&fl=log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_type&fq=net_type:1 AND (idt_id:12011 OR idt_id:5004 OR idt_id:6051 OR idt_id:6056 OR idt_id:8002) AND time_type:1 AND start_time:[1373598465 TO 1374055254] AND -start_time:1374055254&sort=log_id asc,start_time asc,idt_id desc&start=0&rows=30

1 http://slave1:8888/solr-cloud/i_event/select?q=*:*&fl=log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_type&fq=net_type:1&fq=idt_id:12011 OR idt_id:5004 OR idt_id:6051 OR idt_id:6056 OR idt_id:8002&fq =time_type:1&fq=start_time:[1373598465 TO 1374055254]&fq =-start_time:1374055254&sort=log_id asc,start_time asc,idt_id desc&start=0&rows=30

查询结果,如下所示:

<response><lst name="responseHeader"><int name="status">0</int><int name="QTime">5</int></lst><result name="response" numFound="4" start="0"><doc><int name="log_id">6553</int><long name="start_time">1374054184</long><long name="end_time">1374054254</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10307</int><int name="idt_id">12011</int><int name="cnt">0</int><int name="net_type">1</int></doc><doc><int name="log_id">6553</int><long name="start_time">1374054184</long><long name="end_time">1374054254</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">10307</int><int name="idt_id">5004</int><int name="cnt">2</int><int name="net_type">1</int></doc><doc><int name="log_id">6555</int><long name="start_time">1374055060</long><long name="end_time">1374055158</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">70104</int><int name="idt_id">12011</int><int name="cnt">0</int><int name="net_type">1</int></doc><doc><int name="log_id">6555</int><long name="start_time">1374055060</long><long name="end_time">1374055158</long><int name="prov_id">1</int><int name="city_id">103</int><int name="area_id">70104</int><int name="idt_id">5004</int><int name="cnt">3</int><int name="net_type">1</int></doc></result>
</response>

  • 多个字段分组统计(只支持count函数)

SQL查询语句:

1 SELECT city_id, area_id, COUNT(cnt) AS count_cnt
2 FROM v_i_event
3 WHERE prov_id = 1 AND net_type = 1
4 GROUP BY city_id, area_id;

查询结果,如图所示:

Solr查询URL:

1 http://slave1:8888/solr-cloud/i_event/select?q=*:*&facet=true&facet.pivot=city_id,area_id&fq=prov_id:1 AND net_type:1&rows=0&indent=true

查询结果,如下所示:

<response><lst name="responseHeader"><int name="status">0</int><int name="QTime">72</int></lst><result name="response" numFound="1171" start="0"></result><lst name="facet_counts"><lst name="facet_queries" /><lst name="facet_fields" /><lst name="facet_dates" /><lst name="facet_ranges" /><lst name="facet_pivot"><arr name="city_id,area_id"><lst><str name="field">city_id</str><int name="value">103</int><int name="count">678</int><arr name="pivot"><lst><str name="field">area_id</str><int name="value">10307</int><int name="count">298</int></lst><lst><str name="field">area_id</str><int name="value">10315</int><int name="count">120</int></lst><lst><str name="field">area_id</str><int name="value">10317</int><int name="count">86</int></lst><lst><str name="field">area_id</str><int name="value">10304</int><int name="count">67</int></lst><lst><str name="field">area_id</str><int name="value">10310</int><int name="count">49</int></lst><lst><str name="field">area_id</str><int name="value">70104</int><int name="count">48</int></lst><lst><str name="field">area_id</str><int name="value">10308</int><int name="count">6</int></lst><lst><str name="field">area_id</str><int name="value">0</int><int name="count">2</int></lst><lst><str name="field">area_id</str><int name="value">10311</int><int name="count">2</int></lst></arr></lst><lst><str name="field">city_id</str><int name="value">0</int><int name="count">463</int><arr name="pivot"><lst><str name="field">area_id</str><int name="value">0</int><int name="count">395</int></lst><lst><str name="field">area_id</str><int name="value">10307</int><int name="count">68</int></lst></arr></lst><lst><str name="field">city_id</str><int name="value">106</int><int name="count">10</int><arr name="pivot"><lst><str name="field">area_id</str><int name="value">10304</int><int name="count">10</int></lst></arr></lst><lst><str name="field">city_id</str><int name="value">110</int><int name="count">8</int><arr name="pivot"><lst><str name="field">area_id</str><int name="value">0</int><int name="count">8</int></lst></arr></lst><lst><str name="field">city_id</str><int name="value">118</int><int name="count">8</int><arr name="pivot"><lst><str name="field">area_id</str><int name="value">10316</int><int name="count">8</int></lst></arr></lst><lst><str name="field">city_id</str><int name="value">105</int><int name="count">4</int><arr name="pivot"><lst><str name="field">area_id</str><int name="value">0</int><int name="count">4</int></lst></arr></lst></arr></lst></lst>
</response>

对比上面结果,Solr查询结果,需要从上面的各组中进行合并,得到最终的统计结果,结果和SQL结果是一致的。

  • 多个字段分组统计(支持count、sum、max、min等函数)

一次对多个字段进行独立分组统计,Solr可以很好的支持。这相当于执行两个带有GROUP BY子句的SQL,这两个GROUP BY分别只对一个字段进行汇总统计。
SQL查询语句:

1 SELECT city_id, area_id, COUNT(cnt) AS count_cnt
2 FROM v_i_event
3 WHERE prov_id = 1 AND net_type = 1
4 GROUP BY city_id;
5  
6 SELECT city_id, area_id, COUNT(cnt) AS count_cnt
7 FROM v_i_event
8 WHERE prov_id = 1 AND net_type = 1
9 GROUP BY area_id;

查询结果,不再显示。
Solr查询URL:

1 >http://slave1:8888/solr-cloud/i_event/select?q=*:*&stats=true&stats.field=cnt&f.cnt.stats.facet=city_id&&f.cnt.stats.facet=area_id&fq=prov_id:1 AND net_type:1&rows=0&indent=true

查询结果,如下所示:

<response><lst name="responseHeader"><int name="status">0</int><int name="QTime">6</int></lst><result name="response" numFound="1171" start="0"></result><lst name="stats"><lst name="stats_fields"><lst name="cnt"><double name="min">0.0</double><double name="max">167.0</double><long name="count">1171</long><long name="missing">0</long><double name="sum">3701.0</double><double name="sumOfSquares">249641.0</double><double name="mean">3.1605465414175917</double><double name="stddev">14.260812879164407</double><lst name="facets"><lst name="city_id"><lst name="0"><double name="min">0.0</double><double name="max">167.0</double><long name="count">463</long><long name="missing">0</long><double name="sum">2783.0</double><double name="sumOfSquares">238819.0</double><double name="mean">6.010799136069115</double><double name="stddev">21.92524420257807</double><lst name="facets" /></lst><lst name="110"><double name="min">0.0</double><double name="max">1.0</double><long name="count">8</long><long name="missing">0</long><double name="sum">3.0</double><double name="sumOfSquares">3.0</double><double name="mean">0.375</double><double name="stddev">0.5175491695067657</double><lst name="facets" /></lst><lst name="106"><double name="min">0.0</double><double name="max">0.0</double><long name="count">10</long><long name="missing">0</long><double name="sum">0.0</double><double name="sumOfSquares">0.0</double><double name="mean">0.0</double><double name="stddev">0.0</double><lst name="facets" /></lst><lst name="105"><double name="min">0.0</double><double name="max">0.0</double><long name="count">4</long><long name="missing">0</long><double name="sum">0.0</double><double name="sumOfSquares">0.0</double><double name="mean">0.0</double><double name="stddev">0.0</double><lst name="facets" /></lst><lst name="103"><double name="min">0.0</double><double name="max">55.0</double><long name="count">678</long><long name="missing">0</long><double name="sum">915.0</double><double name="sumOfSquares">10819.0</double><double name="mean">1.3495575221238938</double><double name="stddev">3.7625525739676986</double><lst name="facets" /></lst><lst name="118"><double name="min">0.0</double><double name="max">0.0</double><long name="count">8</long><long name="missing">0</long><double name="sum">0.0</double><double name="sumOfSquares">0.0</double><double name="mean">0.0</double><double name="stddev">0.0</double><lst name="facets" /></lst></lst><lst name="area_id"><lst name="10308"><double name="min">0.0</double><double name="max">1.0</double><long name="count">6</long><long name="missing">0</long><double name="sum">1.0</double><double name="sumOfSquares">1.0</double><double name="mean">0.16666666666666666</double><double name="stddev">0.408248290463863</double><lst name="facets" /></lst><lst name="10310"><double name="min">0.0</double><double name="max">5.0</double><long name="count">49</long><long name="missing">0</long><double name="sum">40.0</double><double name="sumOfSquares">108.0</double><double name="mean">0.8163265306122449</double><double name="stddev">1.2528878206593208</double><lst name="facets" /></lst><lst name="0"><double name="min">0.0</double><double name="max">167.0</double><long name="count">409</long><long name="missing">0</long><double name="sum">2722.0</double><double name="sumOfSquares">238550.0</double><double name="mean">6.6552567237163816</double><double name="stddev">23.243931908854</double><lst name="facets" /></lst><lst name="10311"><double name="min">0.0</double><double name="max">0.0</double><long name="count">2</long><long name="missing">0</long><double name="sum">0.0</double><double name="sumOfSquares">0.0</double><double name="mean">0.0</double><double name="stddev">0.0</double><lst name="facets" /></lst><lst name="10304"><double name="min">0.0</double><double name="max">55.0</double><long name="count">77</long><long name="missing">0</long><double name="sum">370.0</double><double name="sumOfSquares">9476.0</double><double name="mean">4.805194805194805</double><double name="stddev">10.064318107786017</double><lst name="facets" /></lst><lst name="70104"><double name="min">0.0</double><double name="max">3.0</double><long name="count">48</long><long name="missing">0</long><double name="sum">51.0</double><double name="sumOfSquares">117.0</double><double name="mean">1.0625</double><double name="stddev">1.1560433254047038</double><lst name="facets" /></lst><lst name="10307"><double name="min">0.0</double><double name="max">12.0</double><long name="count">366</long><long name="missing">0</long><double name="sum">274.0</double><double name="sumOfSquares">768.0</double><double name="mean">0.7486338797814208</double><double name="stddev">1.2418218134151426</double><lst name="facets" /></lst><lst name="10315"><double name="min">0.0</double><double name="max">4.0</double><long name="count">120</long><long name="missing">0</long><double name="sum">143.0</double><double name="sumOfSquares">359.0</double><double name="mean">1.1916666666666667</double><double name="stddev">1.2588899560996694</double><lst name="facets" /></lst><lst name="10316"><double name="min">0.0</double><double name="max">0.0</double><long name="count">8</long><long name="missing">0</long><double name="sum">0.0</double><double name="sumOfSquares">0.0</double><double name="mean">0.0</double><double name="stddev">0.0</double><lst name="facets" /></lst><lst name="10317"><double name="min">0.0</double><double name="max">5.0</double><long name="count">86</long><long name="missing">0</long><double name="sum">100.0</double><double name="sumOfSquares">262.0</double><double name="mean">1.1627906976744187</double><double name="stddev">1.3093371930442208</double><lst name="facets" /></lst></lst></lst></lst></lst></lst>
</response>

  • 多个字段联合分组统计(支持count、sum、max、min等函数)

SQL查询语句:

1 SELECT city_id, area_id, SUM(cnt) AS sum_cnt, AVG(cnt) AS avg_cnt, MAX(cnt) AS max_cnt,MIN(cnt) AS min_cnt, COUNT(cnt) AS count_cnt
2 FROM v_i_event
3 WHERE prov_id = 1 AND net_type = 1
4 GROUP BY city_id, area_id;

查询结果,如图所示:

Solr目前不能简单的支持这种查询,如果想要满足这种查询统计,需要在schema的设计上,将一个字段设置为多值,然后通过多个值进行分组统计。如果应用中查询统计分析的模式比较固定,预先知道哪些字段会用于联合分组统计,完全可以在设计的时候,考虑设置多值字段来满足这种需求。

参考链接

  • http://wiki.apache.org/solr/SimpleFacetParameters
  • http://wiki.apache.org/solr/HierarchicalFaceting#Pivot_Facets
  • http://docs.lucidworks.com/display/solr/The+Stats+Component
  • http://docs.lucidworks.com/display/solr/Faceting

转载于:https://www.cnblogs.com/davidwang456/p/4818749.html

Solr实现SQL的查询与统计--转载相关推荐

  1. 技术分享:如何用Solr搭建大数据查询平台【转载+整理】

    b41k3r 2016-03-30 共191022人围观,发现38个不明物体 数据安全 *原创作者:b41k3r 0×00 开头照例扯淡 自从各种脱裤门事件开始层出不穷,在下就学乖了,各个地方的密码全 ...

  2. SQL联合查询实现统计功能

    每一列都是sql统计的各种数据: select b.wait_num,c.pay_num,d.back_num,e.finish_num,f.all_num,g.finish_price from o ...

  3. (转载)SQL高级查询技巧

    1.UNION,EXCEPT,INTERSECT运算符 A,UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表. ...

  4. SQL数据库的组合查询和统计查询

    数据库的组合查询和统计查询 一.实验目的 对数据库进行组合查询和统计查询 二.实验内容 1.加深对SQL语言查询语句的理解 2.熟练掌握数据查询中的分组统计.计算和组合操作方法. 三.实验要求 在本题 ...

  5. 优雅的利用Mybatis插件实现sql查询耗时统计

    优雅的利用Mybatis插件实现sql查询耗时统计 一. Mybatis反射机制讲解 二. 代理模式讲解 静态代理 动态代理 JDK动态代理参考代码 Proxy.newProxyInstance(xx ...

  6. 【转载】SQL 模糊查询

    SQL 模糊查询 在进行数据库查询时,有完整查询和模糊查询之分. 一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: ...

  7. mysql2000名称_[转载]编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数...

    有以下两张表, Class表 classid classname 1 高三(一)班 2 高三(二)班 3 高三(三)班 Student表 studentid   studentName classid ...

  8. MySQL补充部分-SQL逻辑查询语句执行顺序

    一 SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOI ...

  9. mysql五补充部分:SQL逻辑查询语句执行顺序

    mysql五补充部分:SQL逻辑查询语句执行顺序一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SE ...

最新文章

  1. 【廖雪峰python入门笔记】多重循环
  2. 超长JVM总结,面试必备
  3. db2分页查询语句优化_面试官:数据量很大,分页查询很慢,怎么优化?
  4. 【推荐系统】深入理解推荐系统:排序
  5. NTLDR is missing解决方法
  6. 苹果公司透露Siri新发音引擎的内部原理
  7. 导演李大为婚礼全过程(一)
  8. mac电脑如何与手机同步复制粘贴_如何将电脑里的文件同步到手机里?
  9. svn回退后如何再还原_设计师如何管理自己的文档
  10. 步步为营 .NET 代码重构学习笔记 七
  11. 以JTextPanel为例Swing的鼠标事件详解
  12. LocalBroadcastManager分析
  13. weiit-saas搭建部署教程
  14. yolov5导出onnx用netron.app可视化搜索
  15. python从入门到入魔(肝3天总结的3万字经验)
  16. linux终端中文方块,Linux终端界面显示中文乱码或方块
  17. 区块如何防篡改_区块链数据不可篡改的详细解释
  18. AR、VR、MR 别傻傻分不清了
  19. k m kb mb计算机组成,为什么对计算机存储单位(K,M,G,T)换算,总是糊里又糊涂?
  20. 【Debugger】解决springboot报错Failed to resolve org.junit.platform:junit-platform-launcher:1.x.x的两种解决方案

热门文章

  1. php jcrop,PHP结合JQueryJcrop实现图片裁切实例详解
  2. 华为主题包hwt下载_华为主题 | 星黛露
  3. java字符串10_十个最常见的Java字符串问题
  4. StaticLinkList
  5. This tutorial code needs the xfeatures2d contrib module to be run.
  6. bigqury 认证
  7. Python判断 子集
  8. 49. Leetcode 117. 填充每个节点的下一个右侧节点指针 II (二叉树-二叉树遍历)
  9. 统计和生成所有不同的二叉树
  10. 强化学习(五)---基于模型的强化学习实战