描述:
语法:
cs.join(C:.,T:K,x:F,…; …;…)
备注:
游标cs附加计算,用cs的字段C,…匹配T的键K,T计算表达式x后作为字段F的值拼接到cs上,返回原游标cs。支持多路游标。
K值可为#或者省略,K省略时默认为T的键;K值为#时表示用T表记录的序号,即外键序号化处理,简单概括就是维表的主键是从1开始的自然数,也就是表记录所在行号,这种情况下就可以用键值直接按行号定位维表记录,从而加快与维表关联的速度,进一步提升性能。
如果F在cs中已存在则改写现有字段。时间键值被省略时用now()。
该函数属于延迟计算函数。
选项:
@i |
匹配不上的外键删除整条记录,缺省将填成null。 |
@o(Fi; C:.,T:K,x:F,…; …;…) |
原记录作为字段Fi生成新记录。 |
@d |
删除匹配上外键的整条记录,只做针对cs的过滤操作,此时省略参数x:F。 |
@m |
cs对C有序,T对K有序,此时可用归并方式计算。 |
参数:
cs |
游标/多路游标。 |
C |
游标cs的外键,多个时以冒号隔开。 |
T |
序表/排列。 |
K |
T的键。 |
x |
T的字段表达式。 |
F |
x的字段名。 |
返回值:
游标
示例:
K省略时:
|
A |
|
1 |
=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES") |
返回游标,数据内容如下: |
2 |
=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID) |
返回以STATEID为键的序表: |
3 |
=A1.join(STATEID,A2,CAPITAL) |
游标A1附加计算,将CITIES表与STATECAPITAL表外键式连接,参数K缺省为的STATECAPITAL键,即STATEID,将STATECAPITAL表中的字段CAPITAL拼接到游标中,返回到A1游标。 |
4 |
=A1.fetch() |
读取游标A1执行A3计算后的数据(数据量较大时建议分批读取): |
K为#时:
|
A |
|
1 |
=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES") |
返回游标,数据内容如下: |
2 |
=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID) |
返回以STATEID为键的序表: |
3 |
=A1.join(STATEID,A2:#,CAPITAL) |
游标A1附加计算,可以看到STATEID字段是从1开始的自然数,与STATECAPITAL表的记录号是一致的,所以可以将参数K设为#,表示用STATECAPITAL表的序号,可提高计算效率,返回A1游标。 |
4 |
=A1.fetch() |
读取游标A1执行A3计算后的数据: |
使用@i选项:
|
A |
|
1 |
=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES") |
返回游标,数据内容如下: |
2 |
=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID) |
返回以STATEID为键的序表: |
3 |
=A1.join@i(STATEID,A2,CAPITAL) |
游标A1附加计算,使用@i选项,匹配不上的外键删除整条记录,缺省将填成null,返回A1游标。 |
4 |
=A1.fetch() |
读取游标A1执行A3计算后的数据: |
使用@i选项, 参数x:F省略时:
|
A |
|
1 |
=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES") |
返回游标,数据内容如下: |
2 |
=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID) |
返回以STATEID为键的序表: |
3 |
=A1.join@i(STATEID,A2) |
游标A1附加计算,使用@i选项,当参数x:F省略时,只做针对CITIES表的过滤操作,返回A1游标。 |
4 |
=A1.fetch() |
读取游标A1执行A3计算后的数据: |
使用@d选项:
|
A |
|
1 |
=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES") |
返回游标,数据内容如下: |
2 |
=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID) |
返回以STATEID为键的序表: |
3 |
=A1.join@d(STATEID,A2) |
游标A1附加计算,使用@d选项,当参数x:F省略时,删除匹配上外键的整条记录,只做针对CITIES表的过滤操作,返回A1游标。 |
4 |
=A1.fetch() |
读取游标A1执行A3计算后的数据: |
x参数值在T中找不到时:
|
A |
|
1 |
=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES") |
返回游标,数据内容如下: |
2 |
=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID) |
返回以STATEID为键的序表: |
3 |
=A1.join(STATEID,A2,abc) |
游标A1附加计算,x参数值在A2中找不到则填为null,返回A1游标。 |
4 |
=A1.fetch() |
读取游标A1执行A3计算后的数据: |
使用@o选项:
|
A |
|
1 |
=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES") |
返回游标,数据内容如下: |
2 |
=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID) |
返回以STATEID为键的序表: |
3 |
=A1.join@o(cities;STATEID,A2,CAPITAL) |
游标A1附加计算,使用@o选项,A1原记录作为字段cities生成新记录,返回A1游标。 |
4 |
=A1.fetch() |
读取游标A1执行A3计算后的数据: |
F在cs中已存在则改写现有字段:
|
A |
|
1 |
=connect("demo").cursor("SELECT top 10 CID,NAME,POPULATION,STATEID FROM CITIES") |
返回游标,数据内容如下: |
2 |
=connect("demo").query("SELECT top 40 * FROM STATECAPITAL").keys(STATEID) |
返回以STATEID为键的序表: |
3 |
=A1.join(STATEID,A2,CAPITAL:NAME) |
游标A1附加计算, NAME在CITIES表中已存在所以改写现有字段,返回A1游标。 |
4 |
=A1.fetch() |
读取游标A1执行A3计算后的数据: |
相关概念: