表1
name start end1 strand
CDS1 25 30 12001.m07002
CDS2 35 80 12001.m07002
CDS3 100 180 12001.m07002
mRNA 1 200 12001.m07002
表2
mirna start end gene_model
osa-miR1 44 65 12001.m07002
osa-miR2 120 165 12001.m07002
...
想要的结果是
表3
mirna start end gene_model location
osa-miR1 44 65 12001.m07002 CDS1
osa-miR2 120 165 12001.m07002 CDS3
osa-miR3 185 195 12001.m07002 3
osa-miR4 4 15 12001.m07002 5
通过判断表中的miRNA在表1中的位置分别标记上,如果不在表1 start和end 范围内的标记为5 和 3 ,落在CDS1之前的标记为5,落在最后一个cds3之后的标记为3
name start end1 strand
CDS1 25 30 12001.m07002
CDS2 35 80 12001.m07002
CDS3 100 180 12001.m07002
mRNA 1 200 12001.m07002
表2
mirna start end gene_model
osa-miR1 44 65 12001.m07002
osa-miR2 120 165 12001.m07002
...
想要的结果是
表3
mirna start end gene_model location
osa-miR1 44 65 12001.m07002 CDS1
osa-miR2 120 165 12001.m07002 CDS3
osa-miR3 185 195 12001.m07002 3
osa-miR4 4 15 12001.m07002 5
通过判断表中的miRNA在表1中的位置分别标记上,如果不在表1 start和end 范围内的标记为5 和 3 ,落在CDS1之前的标记为5,落在最后一个cds3之后的标记为3
解决方案 »
- 时间类型转换问题
- 如何合并数据库中所有的表
- SQL 2008中的问题
- 一个简单的数据更新问题 请高手来看看~~~
- 请教zjcxc(邹建) ( )和zhangzs8896(小二) 等高手~~~~
- 检索 COM 类公司中CLSID 为 {10021F00-E260-11CF-AE68-00AA004A34D5} 的组件时失败,原因是出现以下错误: 8007
- CakePHP save到数据库 中文乱码
- 弱弱问题!输入记录时“类型不匹配”!
- sql简单问题(急)
- 从SQL SERVER 7.0 导出数据至SQL SERVER 2000出现的问题!
- 关于unique约束的一个小问题
- 小弟是学生 实在找不出 这个数据库约束的代码错误 请高手指示
表3
mirna start end gene_model location
osa-miR1 44 65 12001.m07002 CDS1 应该是CDS2吧?
name start end1 gene_model
CDS1 25 30 12001.m07002
CDS2 35 80 12001.m07002
CDS3 100 180 12001.m07002
mRNA 1 200 12001.m07002
表2
mirna start end gene_model
osa-miR1 44 65 12001.m07002
osa-miR2 120 165 12001.m07002
...
想要的结果是
表3
mirna start end gene_model location
osa-miR1 44 65 12001.m07002 CDS2
osa-miR2 120 165 12001.m07002 CDS3
osa-miR3 185 195 12001.m07002 3
osa-miR4 4 15 12001.m07002 5
通过判断表中的miRNA在表1中的位置分别标记上,如果不在表1 start和end 范围内的标记为5 和 3 ,落在CDS1之前的标记为5,落在最后一个cds3之后的标记为3
纠正版表1
name start end1 gene_model
CDS1 25 30 12001.m07002
CDS2 35 80 12001.m07002
CDS3 100 180 12001.m07002
mRNA 1 200 12001.m07002
表2
mirna start end gene_model
osa-miR1 44 65 12001.m07002
osa-miR2 120 165 12001.m07002
...
想要的结果是
表3
mirna start end gene_model location
osa-miR1 44 65 12001.m07002 CDS2
osa-miR2 120 165 12001.m07002 CDS3
osa-miR3 185 195 12001.m07002 3
osa-miR4 4 15 12001.m07002 5
通过判断表中的miRNA在表1中的位置分别标记上,如果不在表1 start和end 范围内的标记为5 和 3 ,落在CDS1之前的标记为5,落在最后一个cds3之后的标记为3
*/
select distinct *
from (
select distinct b.*,
(case when b.start >a.start and b.start < a.end1 then a.[name]
when b.start < c.start_a then '5' when b.start > c.start_b then '3' end
) location
from tableB b
join tableA a on b.gene_model=a.gene_model and a.[name] <> 'mRNA'
join (select distinct start_a=(select start from tableA where [name]='CDS1'),
start_b=(select end1 from tableA where [name]='CDS3'),gene_model
from tableA) c on b.gene_model=c.gene_model
) d where d.location is not NUll
/*
miRNA start end gene_model location
osa-miR1 44 65 12001.m07002 CDS2
osa-miR2 120 165 12001.m07002 CDS3
osa-miR3 185 195 12001.m07002 3
osa-miR4 4 15 12001.m07002 5
*/