字段集合MOQL—筛选器(Selector)(三)

发一下牢骚和主题无关:

    

HAVING子句

         与SQL语法一致,描述了对group by子句中产生的组数据停止过滤的过滤条件。Having子句中的所有字段都需要是select子句中的列,与where不同的是,这里是对分组结果数据的过滤,而where是对原始表数据停止的。

    

[having SEARCH_CONDITION]

    SEARCH_CONDITION为详细的查询条件,其详细描述拜见《MOQL—过滤器(Filter)》。

    

集合运算子句

         集合运算描述了两个或多个查询结果间的运算,运算包括:union(并集)、except(差集)、symexcept(对称差集)、complementation(补集)以及intersect(交集)等。其语法结构如下:

    

[union [all]|except|symexcept|complementation|intersect[all] QUERY_EXPRESSION]

       停止集合运算的两个结果集A、B,其集合运算式为:“A 集合运算符 B”。A、B两个结果集,其字段数目和字段次序可以不一致,但必须保证集合A的字段定义包括于集合B的字段定义中,否则两个结果集没法停止畸形的集合运算。运算时,集合运算以左操作数即A结果集的字段和字段序为基础停止集合运算。

    union [all]

   表示两个查询结果合并在一起。 [all]表示合并集适时,不去除两个集合中雷同的记载。而缺省情况下,若两个集合存在完全一样的多条记载,则只保留一条。并集的数学式为:A ∪ B。

    except

       表示两个查询结果停止差集运算,即用第一个结果集减去第二个结果集,去除第一个结果集中与第二个结果集完全雷同的记载后剩下的记载即为差集结果。如:两个集合A、B,其差集数学式为:A – B。

    symexcept

       对称差集的结果为两个查询结果互相求差集后,又对两个差集求了并集。其数学式为:A – B ∪ B– A。

    complementation

   表示先对两个结果集求合集,然后再求左操作数结果集的补集。如:A complementation B,其对应的补集数学式为 (A ∪ B) – A。

    intersect [all]

    每日一道理
爱心是一片照射在冬日的阳光,使贫病交迫的人感到人间的温暖;爱心是一泓出现在沙漠里的泉水,使濒临绝境的人重新看到生活的希望;爱心是一首飘荡在夜空的歌谣,使孤苦无依的人获得心灵的慰藉。

   表示对两个结果集求交集。[all] 表示集合订交时,不去除交集中两个结果集多次订交命中的雷同的记载。而缺省情况下,若交集中存在完全一样的多条记载,则只保留一条。交集的数学式为:A ∩ B。

    

ORDER BY子句

         与SQL语法一致,描述了如何对查询结果停止排序,排序是按哪个或是哪几个字段停止排序;按升序、还是按降序排序等。一个Selector定义中只能有一个order by子句,但可以有多个select子句。

    

[order by ORDER_ITEM [asc |desc] [, ...]]

    ORDER_ITEM [asc | desc]

   表示要停止排序的字段的名字。这个字段可以是select子句中的列或者是其别名;也可以是列的索引值,索引从1开始计数;还可以是from子句中恣意一个表(集合对象)的字段名,如:table1.name,table1为集合对象的别名,而name为该集合对象的一个字段。用于排序的字段不必要一定是select子句中包括的列。[asc |desc]表示排序方法,asc表示对字段中的数据按升序排序;desc表示对字段中的数据按降序排序。排序时可以同时指定多个字段及排序方法。执行时,排序工作从左到右顺次对每个字段停止排序。其含意为,首先对结果集按字段1停止排序;然后在此基础上对数据字段1雷同的记载再按字段2停止排序……。

       Selector各子句都有相干的代码样例,在jar包的example/TestSelector.java中,这里就不一一列举,有兴趣的朋友可以在如下的项目路径中下到最新的jar包。

    

 字段和集合

    

项目地址:http://sourceforge.net/projects/moql/

    

代码路径:svn://svn.code.sf.net/p/moql/code/trunk

文章结束给大家分享下程序员的一些笑话语录: 联想——对内高价,补贴对外倾销的伟大“民族”企业。

你可能感兴趣的:(selector)