1

所以我有这个非常丑陋(但功能强大)的多个子查询 mysql Select 命令。

select myt_taxon_list, count(myt_taxon_list)
from (select t1.taxon_list as myt_taxon_list, t1.query_prot_id,
             count(t1.query_prot_id) / (select count(t.id)
                                        from taxa t, stax st
                                        where t.systematics like concat('%; ', st.taxon_list, '%')
                                              and t.taxon_name not like '%thaliana%'
                                              and st.taxon_list = t1.taxon_list
                                        group by t1.taxon_list) as taxfrac
      from task1 t1
      where t1.taxon_list = 'Stramenopiles'
      group by t1.query_prot_id) myt 
where taxfrac > 0.5

在最后一行,您可以阅读“Stramenopiles”。其结果是一个简单的计数。现在我想编写一个 bash 脚本,该脚本不仅为 Stramenopiles 还为该列中的所有条目写入计数 - 不是总和,而是每个分隔的条目。我需要将它与 bash 中的迭代循环结合起来,但我以前从未编写过脚本。有人可以帮我弄这个吗?

4

1 回答 1

1

我根本不会在 bash 中这样做。如果你删除

where t1.taxon_list = 'Stramenopiles'

您可以group by myt_taxon_list在外部选择中使用 a

select myt_taxon_list, count(myt_taxon_list)
from (select t1.taxon_list as myt_taxon_list, t1.query_prot_id,
             count(t1.query_prot_id) / (select count(t.id)
                                        from taxa t, stax st
                                        where t.systematics like concat('%; ', st.taxon_list, '%')
                                              and t.taxon_name not like '%thaliana%'
                                              and st.taxon_list = t1.taxon_list
                                        group by t1.taxon_list) as taxfrac
      from task1 t1
      group by t1.query_prot_id, t1.taxon_list) myt 
where taxfrac > 0.5
group by myt_taxon_list

它为您提供了所有taxon_list条目的精确计算。

于 2013-03-01T14:20:19.227 回答