2009-08-18 63 views
1

我在MySQL DB中有两个表; table1,table2。如何在一个输出文件中连接两个表的结果?

它们都有单列(浮点)值。这实际上是我们研究项目的一个转储,它产生了单一的价值结果。

许多这些值得到重复和排序和过滤它们在Python中将是繁琐的,所以我虽然也许倾销他们在数据库表中将更快。

value table1_count table2_count 
1.0   0    1 
1.1   1    3 
2.1   4    5 

我来了该查询如下:

select everything.value, everything.count1, everything.count2 
from 
((
select X as value, count(*) from table1 
) union all (
select X as value, count (*) from table2 
)) everything 
group by everything.value 
into outfile "/count"; 

任何建议

因此,从SQL查询的最终结果是继值分组?

感谢,

回答

1

你不能在内部查询通过组办次数,因为你定义在外部查询组。这应该是简单的:

select everything.value, count(*) 
from 
(
    select X as value from table1 
    union all 
    select X from table2 
) everything 
group by value 
into outfile "/count"; 

而且这里的一些琐事:当您使用UNION,你只需要在第一个查询被联合定义列别名。


重新发表您的评论。这里有一个解决方案:

select everything.value, sum(t = 'success') as s, sum(t = 'failure') as f 
from 
(
    select X as value, 'success' as t from table1 
    union all 
    select X, 'failure' from table2 
) everything 
group by value 
into outfile "/count"; 

这在MySQL中使用布尔表达式返回0为false或1为true。所以当你总结一堆表达式时,你会得到表达式为真的行数。 (不要依赖这一招在其他品牌的SQL数据库。)

+0

感谢比尔...... 但它并没有回答我的问题... 在您的回复,你有一个外部计数是结合表1和表2的计数;我需要保持计数分开为每个表,因为一个代表成功和失败,所以他们不能在外部查询组合。 有什么建议吗? – okm 2009-08-19 07:29:02

相关问题