merge()

阅读(2049) 标签: :归并计算, 合并,

本章节介绍merge()函数的用法。

A.merge()

描述:

归并计算,将多个序表/排列合并。

语法:

A.merge(xi,…)

备注:

将多个序表/排列按指定字段xi有序合并,xi省略按主键合并,若xi省略且A没有主键则按照所有字段合并xi相同的成员,A(i)取完再取A(i+1)的。

参数:

A

结构相同的多个序表/排列。

xi

字段名如果是按照多字段合并,字段间用逗号分隔,例如:x1,x2...

选项:

@u

A(i)的成员按顺序合并到一起组成新的序表/排列,去掉重复的成员。xi相同则认为对应的A(i)成员相同。

@i

返回A(i)共同的成员组成的序表/排列。

@d

A(1)中去掉A(2) &A(n)中的成员后形成的新序表/排列。

@o

不假定A(i)[xi,…]有序。

@0

null排最后。

@x

返回A(i)去掉共同的成员组成的序表/序列。

返回值:

序表/排列

示例:

 

A

 

1

=demo.query("select EID,NAME,GENDER,SALARY from EMPLOYEE where EID<6")

EID有序

2

=demo.query("select EID,NAME,GENDER,SALARY from EMPLOYEE where EID>3")

EID有序:

3

=[A1,A2].merge(EID)

A1A2按照EID有序合并:

4

=[A1,A2].merge@u(EID)

A1A2按照EID有序合并,并去掉重复成员:

5

=[A1,A2].merge@i(EID)

A1A2按照EID有序合并,只保留重复成员。

6

=[A1,A2].merge@d(EID)

去除A1A2的成员。

7

=[A1,A2].merge@o(SALARY)

8

=[A1,A2].merge@x(EID)

去掉A1A2中重复的部分,组成新的序表。

9

=demo.query("select * from EMPLOYEE where GENDER = 'M'").keys(EID)

10

=demo.query("select * from EMPLOYEE where GENDER = 'F'").keys(EID)

11

=[A9,A10].merge()

没指定字段,则该序表按照主键顺序合并。

12

=demo.query("select * from EMPLOYEE where GENDER = 'M' and EID <15")

 

13

=demo.query("select * from EMPLOYEE where GENDER = 'M' and EID >=15")

 

14

=[A12,A13].merge(EID,GENDER)

按照EIDGENDER两个字段合并。

15

=A1.run(EID=null)

 

16

=[A2,A15].merge(EID)

17

=[A2,A15].merge@0(EID)

null排最后。

相关概念:

CS.merge()

CS.merge()

描述:

针对游标序列成员做归并运算后返回多路游标。

语法:

CS.merge(xi,…)

备注:

CS是对[xi,…]有序的游标的序列,针对其成员输出的对应序列按照表达式xi做有序归并运算,结果返回多路游标。

游标中序列的成员必须同构。支持多路游标, 若成员是多路游标,则必须路数相同且同步分段。

该函数属于延迟计算函数。

选项:

@u

并集运算,CS游标序列的成员按顺序合并到一起组成新的游标,去掉重复的成员。缺省包含所有重复成员。

@i

交集运算,返回CS游标序列中共同的成员组成的游标。

@d

差集运算,从游标CS1中去掉游标CS2CSn中的成员后形成的新游标。

@0

null排最后。

@x

从游标CS1CS2...CSn中取出不重复的成员组成的新游标。

参数:

CS

游标组成的序列。

xi

表达式如果是按照多字段归并,字段间用逗号分隔,例如:x1,x2...

返回值

多路游标

示例:

 

A

 

1

=connect("demo").cursor("SELECT  top 10 EID,NAME,DEPT,GENDER  FROM employee ")

返回游标,数据内容如下:

2

=connect("demo").cursor("SELECT  top 5 EID,NAME,DEPT,GENDER  FROM employee where GENDER='M' ")

返回游标,数据内容如下:

3

=connect("demo").cursor("SELECT  top 5 EID,NAME,DEPT,GENDER  FROM  employee where DEPT='Sales' ")

返回游标,数据内容如下:

4

=[A1,A2,A3]

返回游标序列。

5

=A4.merge(EID)

游标序列成员中的记录根据EID字段有序归并。

6

=A5.fetch()

读取游标A5中的数据(数据量较大时建议分批读取):

  使用@u选项,并集计算:

 

A

 

1

=connect("demo").cursor("SELECT  top 10 EID,NAME,DEPT,GENDER  FROM employee ")

返回游标,数据内容如下:

2

=connect("demo").cursor("SELECT  top 5 EID,NAME,DEPT,GENDER  FROM employee where GENDER='M' ")

返回游标,数据内容如下:

3

=connect("demo").cursor("SELECT  top 5 EID,NAME,DEPT,GENDER  FROM  employee where DEPT='Sales' ")

返回游标,数据内容如下:

4

=[A1,A2,A3]

返回游标序列。

5

=A4.merge@u(EID)

使用@u选项,游标序列成员中的记录根据EID字段有序归并,去掉重复的成员。

6

=A5.fetch()

读取游标A5中的数据:

使用@i选项,交集计算:

 

A

 

1

=connect("demo").cursor("SELECT  top 10 EID,NAME,DEPT,GENDER  FROM employee ")

返回游标,数据内容如下:

2

=connect("demo").cursor("SELECT  top 5 EID,NAME,DEPT,GENDER  FROM employee where GENDER='M' ")

返回游标,数据内容如下:

3

=connect("demo").cursor("SELECT  top 5 EID,NAME,DEPT,GENDER  FROM  employee where DEPT='Sales' ")

返回游标,数据内容如下:

4

=[A1,A2,A3]

返回游标序列。

5

=A4.merge@i(EID)

使用@i选项,交集运算,返回游标序列中共同成员组成的游标。

6

=A5.fetch()

读取游标A5中的数据:

使用@d选项,差集计算:

 

A

 

1

=connect("demo").cursor("SELECT  top 10 EID,NAME,DEPT,GENDER  FROM employee ")

返回游标,数据内容如下:

2

=connect("demo").cursor("SELECT  top 5 EID,NAME,DEPT,GENDER  FROM employee where GENDER='M' ")

返回游标,数据内容如下:

3

=connect("demo").cursor("SELECT  top 5 EID,NAME,DEPT,GENDER  FROM  employee where DEPT='Sales' ")

返回游标,数据内容如下:

4

=[A1,A2,A3]

返回游标序列。

5

=A4.merge@d(EID)

使用@d选项,差集运算,从游标A1中去掉游标A2A3中的成员后形成的新游标

6

=A5.fetch()

读取游标A5中的数据:

使用@x选项,取出游标序列中不重复的成员组成新的序列:

 

A

 

1

=connect("demo").cursor("SELECT  top 10 EID,NAME,DEPT,GENDER  FROM employee ")

返回游标,数据内容如下:

2

=connect("demo").cursor("SELECT  top 5 EID,NAME,DEPT,GENDER  FROM employee where GENDER='M' ")

返回游标,数据内容如下:

3

=connect("demo").cursor("SELECT  top 5 EID,NAME,DEPT,GENDER  FROM  employee where DEPT='Sales' ")

返回游标,数据内容如下:

4

=[A1,A2,A3]

返回游标序列。

5

=A4.merge@x(EID)

使用@x选项,差集运算,从取出游标序列中不重复的成员组成新的序列

6

=A5.fetch()

读取游标A5中的数据:

相关概念:

A.merge()