【发布时间】:2020-11-30 18:38:51
【问题描述】:
我在SQL 上的桌子上遇到问题querying。我有两张表:table 1 (8000 lines) 由一列仅包含唯一基因 id (ex. HxC4233) 和 table 2 (20000 lines) 组成,两列包含与表一相似的基因 id,但存在具有相应基因长度的重复项(因此不是唯一的)。问题是一些相同的基因有不同的亚型(ex. HxC4233_i1, HxC4233_i2) 具有不同的长度,但我已经在两列中修剪了我的基因 id 以仅显示这一点 (HxC4233)。
我想创建一个查询,其中包含表一中的所有唯一基因 ID,以及表二中的基因对应基因长度。但我只希望拥有独特的基因长度,而不是全部。
我尝试编写命令来获得我想要的输出。但我收到了所有基因 ID 作为我的输出。这是我的命令:
SELECT DISTINCT uniqgene_id, allgene_len
--> FROM table1 RIGHT JOIN table2
--> ON allgene_id = uniqgene_id;
是否可以只输出我唯一的基因id,只提取其对应的基因长度?
DISTINCT 命令不考虑具有不同长度的相似基因。
我想要的输出是只有具有相应长度的唯一基因 ID。
我的输出应该包含大约 8000 行。
【问题讨论】:
-
我认为在 select 中添加
distinct对你来说应该很好,但我无法理解这个问题的要点,所以你可以根据 meta.stackoverflow.com/questions/271055/… 进行修改 -
您不必向每个人道歉;)请发布您的输出结果如何。
-
您能否举例说明表 1 和表 2 记录以及您从这些记录中查找的理想输出?
-
但是首先你必须决定在表2中gene_id重复的情况下你要显示的基因长度值。最大还是最小?还是平均?然后使用 group by gene_id 得到 8000 行的结果。
-
SELECT uniqgene_id, MAX(allgene_len) FROM ... GROUP BY uniqgene_id