2016-03-16 49 views
0
tag | date | $ 
1 | 112014 | 1.42 
2 | 112014 | 2.53 
1 | 112015 | 1.42 

所需的输出:SQL帮助 - 比较不同表中的值基于价值

col1 - tag 
col2 - earliest date 
col3 - later date 
col4 - $ 

现在我想让它显示是这样的:

1 | 112014 | 112015 | 1.42 

想通过在查询中要做到这一点MySQL的
请帮助!如果它可以检查两个表中的值 - 即检查tbl2对tbl1的数据

回答

0

要实现此目的,您可以使用聚合函数,如MAX(),MIN(),AVG(),SUM(),if您需要为每个标签只获得一行,using grouping

SELECT `col1` as `tag`, MIN(`col2`) as `earliest_date`, MAX(`col3`) as `latest_date`, AVG(`col4`) as `sum` 
FROM `tbl1` 
GROUP BY `col1` 

如果您需要选择所有行,并sorted by columns你提供,那么查询可能是这样的:

SELECT `col1` as `tag`, `col2`, `col3`, `col4` as `sum` 
FROM `tbl1` 
ORDER BY `col2` ASC, `col3` DESC 

您可以使用UNION,如果你只是想从两个表导致。

如果你需要从两个表中作为一个表处理数据和运行他们聚集,然后应用概念聚集/汇总表,都认为:

CREATE TABLE `merged_tbl` AS SELECT * FROM `tbl1` UNION SELECT * FROM `tbl2` 

然后执行相同的聚集查询,但在新创建的合并表。