我有一个制表符分隔的两列文件“cluster-refSeq.csv”,其中包含数千个这样的条目:
chr10_100486611_100486680_+ NM_053314
chr10_102864904_102865004_- NM_001013042
chr10_103280127_103280156_- NM_001013042
这里,“cluster”列中的条目是唯一的,但它们可以链接到多个 refSeq。
我有另一个文件“refSeq-symbol.csv”,其中包含数千个这样的条目:
NM_053314 Kcnj16
NM_053316 Ip6k1
NM_053317 Nr0b1
在这里,refSeq 列中的条目是唯一的,但它们可以链接到多个符号。
每个文件中的行都是唯一的(没有重复的条目)。
我想加入这两个文件,以便第一个文件中的集群条目通过 refseq 条目链接到第二个文件的符号条目。我想要所有可能的有效组合。我想我想要的是一个 LEFT OUTER JOIN。
所需的输出应如下所示:
chr10_100486611_100486680_+ NM_053314 Kcnj16
我试图用 sqlite 做到这一点:
create table alpha (cluster text, refseq text);
create table beta (refseq text, symbol text);
.separator "\t"
.import cluster-refSeq.csv alpha
.import refSeq-symbol.csv beta
select alpha.cluster, alpha.refseq, beta.symbol from alpha left outer join beta on alpha.refseq=beta.refseq;
这确实生成了我想要的输出(我认为),但它确实包含重复的条目!
即,如果我通过 sort 和 uniq 运行输出,我会得到更少的三元组。
我的问题是:我是否真的在做我认为我正在使用上面的 sqlite 代码做的事情,为什么我会得到重复的输出行?如何修复我的 sqlite 代码?