我有以下查询:
SELECT mutations.id, genes.loc FROM mutations, genes where mutations.id=genes.id;
并输出:
| SL2.50ch02_51014904 | intergenic |
| SL2.50ch02_51014907 | upstream |
| SL2.50ch02_51014907 | downstream |
| SL2.50ch02_51014907 | intergenic |
| SL2.50ch02_51014911 | upstream |
| SL2.50ch02_51014911 | downstream |
我想要的输出是这样的:
| SL2.50ch02_51014904 | intergenic |
| SL2.50ch02_51014907 | upstream,downstream,intergenic |
| SL2.50ch02_51014911 | upstream,downstream |
我想GROUP_CONCAT
对此很有用。但是,这样做:
SELECT mutations.id, GROUP_CONCAT(distinct(genes.loc)) FROM mutations, genes WHERE mutations.id=genes.id;
我有一个像这样的独特行:
SL2.50ch02_51014904 | downstream,intergenic,upstream
我该如何解决这个问题?
你需要添加group by
:
SELECT m.id, GROUP_CONCAT(distinct(g.loc))
FROM mutations m JOIN
genes g
ON m.id = g.id
GROUP BY m.id;
在此过程中,您应该学习其他一些东西:
- 使用显式
join
句法。一个简单的规则:切勿在中使用逗号from
clause.
- 使用表别名(
m
and g
)。它们使查询更容易编写和阅读。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)