join用法 sql join on的用法

j o i n用来将来自两个分类文本文件的行连在一起。
下面讲述j o i n工作方式。这里有两个文件f i l e 1和f i l e2,当然已经分类。每个文件里都有一些元素与另一个文件相关。由于这种关系, j o in将两个文件连在一起,这有点像修改一个主文件,使之包含两个文件里的共同元素。
文本文件中的域通常由空格或t a b键分隔,但如果愿意,可以指定其他的域分隔符。一些系统要求使用j o i n时文件域要少于20,为公平起见,如果域大于2 0,应使用D B M S系统。
为有效使用j o i n,需分别将输入文件分类。
其一般格式为:
  1. join [options] input-file1 input-file2

选项:
an n 为一数字,用于连接时从文件n中显示不匹配行。例如, - a 1显示第一个文件的不匹配行,- a2为从第二个文件中显示不匹配行。
o n.m n为文件号,m为域号。1 . 3表示只显示文件1第三域,每个n,m必须用逗号分隔,如1 . 3,2 . 1。
j n m n为文件号,m为域号。使用其他域做连接域。
t 域分隔符。用来设置非空格或t a b键的域分隔符。例如,指定冒号做域分隔符- t:。


现有两个文本文件,其中一个包含名字和街道地址,称为n a m e . t x t,另一个是名字和城镇,
为t o w n . t x t。
  1. [sam@chenwy sam]$ cat names.txt
  2. M.Golls 12 Hidd Rd
  3. P.Heller The Acre
  4. P.Willey 132 The Grove
  5. T.Norms 84 Connaught Rd
  6. K.Fletch 12 Woodlea

  1. [sam@chenwy sam]$ cat town.txt
  2. M.Golls Norwich NRD
  3. P.Willey Galashiels GDD
  4. T.Norms Brandon BSL
  5. K.Fletch Mildenhall MAF
  6. K.Firt Mitryl Mdt


连接两个文件
连接两个文件,使得名字支持详细地址。例如M . G o l l s记录指出地址为12 HiddRd。连接域为域0—名字域。因为两个文件此域相同, j o i n将假定这是连接域:
  1. [sam@chenwy sam]$ join names.txt town.txt
  2. M.Golls 12 Hidd Rd Norwich NRD
  3. P.Willey 132 The Grove Galashiels GDD
  4. T.Norms 84 Connaught Rd Brandon BSL
  5. K.Fletch 12 Woodlea Mildenhall MAF

缺省j o i n删除或去除连接键的第二次重复出现,这里即为名字域。

1. 不匹配连接
如果一个文件与另一个文件没有匹配域时怎么办?这时j o i n不可以没有参数选项,经常指定两个文件的-a选项。下面的例子显示匹配及不匹配域。
  1. [sam@chenwy sam]$ join -a1 -a2 names.txt town.txt
  2. M.Golls 12 Hidd Rd Norwich NRD
  3. P.Heller The Acre
  4. P.Willey 132 The Grove Galashiels GDD
  5. T.Norms 84 Connaught Rd Brandon BSL
  6. K.Fletch 12 Woodlea Mildenhall MAF
  7. K.Firt Mitryl Mdt

  1. [sam@chenwy sam]$ join-a1names.txttown.txt
  2. M.Golls 12 Hidd Rd Norwich NRD
  3. P.Heller The Acre
  4. P.Willey 132 The Grove Galashiels GDD
  5. T.Norms 84 Connaught Rd Brandon BSL
  6. K.Fletch 12 Woodlea Mildenhall MAF


2. 选择性连接
使用- o选项选择连接域。例如要创建一个文件仅包含人名及城镇, j o i n执行时需要指定显示域。方式如下:
使用1 . 1显示第一个文件第一个域,2 . 2显示第二个文件第二个域,其间用逗号分隔。命令为:
  1. [sam@chenwy sam]$ join -o 1.1,2.2 names.txt town.txt
  2. M.Golls Norwich
  3. P.Willey Galashiels
  4. T.Norms Brandon
  5. K.Fletch Mildenhall


使用-jn m进行其他域连接,例如用文件1域3和文件域2做连接键,命令为:
  1. [sam@chenwy sam]$ cat pers
  2. P.Jones Of fice Runner ID897
  3. S.Round UNIX admin ID666
  4. L.Clip Personl Chief ID982

  1. [sam@chenwy sam]$ cat pers2
  2. Dept2C ID897 6 years
  3. Dept3S ID666 2 years
  4. Dept5Z ID982 1 year

文件p e r s包括名字、工作性质和个人I D号。文件p e r s 2包括部门、个人I D号及工龄。连接应使用文件p e rs中域4,匹配文件p e r s 2中域2,命令及结果如下:
  1. [sam@chenwy sam]$ join -j1 4 -j2 2 pers pers2
  2. ID897 P.Jones Office Runner Dept2C 6 years
  3. ID666 S.Round UNIX admin Dept3S 2 years
    join用法 sql join on的用法
  4. ID982 L.Clip Personl Chief Dept5Z 1 year

使用j o i n应注意连接域到底是哪一个,比如说你认为正在访问域4,但实际上j o in应该访问域5,这样将不返回任何结果。如果是这样,用a w k检查域号。例如,键入$ awk '{print$4}'文件名,观察其是否匹配假想域。

  

爱华网本文地址 » http://www.413yy.cn/a/25101016/297553.html

更多阅读

SQL中EXISTS怎么用 sql exists in的区别

SQL中EXISTS怎么用——简介EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或FalseSQL中EXISTS怎么用——方法/步骤SQL中EXISTS怎么用 1、EXISTS用于检查子查询是否至少会返回一行数据,该

丹阳参的具体用法 af on的具体用法

1、泡水嚼服法取丹阳参半支左右,放入口中慢慢嚼之,每天服用一次,连续服用7天为一个周期,连续服用7天后,停服5天,然后再继续服用,一般一月,男性的腰疼肾虚,阳痿时间短等症状会明显改善。2、壮阳方原料:丹阳参1克、枸杞

声明:《join用法 sql join on的用法》为网友冷空气却清晰分享!如侵犯到您的合法权益请联系我们删除