如何在一个输出文件中连接两个表的结果?

时间:2009-08-18 16:53:54

标签: mysql

我在MySQL DB中有两个表; table1,table2。

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

其中许多值都会被重复,并且在Python中对它们进行排序和过滤会很麻烦,所以我可能会将它们转储到DB中的表中会更快。

因此,SQL查询的最终结果是按以下值分组:

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";

有什么建议吗?

谢谢,

1 个答案:

答案 0 :(得分: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表示。因此,当您总结一堆表达式时,您将获得表达式为true的行的计数。 (不要在其他品牌的SQL数据库中依赖这个技巧。)