日期:2014-05-17  浏览次数:20440 次

多表统计重复数据
如题统计如下两个表
比如 表1
id      dm

5945 320324
5921 320382
5953 320721
5808 320721
5809 320721
5810 320724
5811 320724
5814 320724

表2
id      dm

5945 320325
5921 320382
5953 320721
5808 320382
5809 320721
5810 320724
5811 320724
5814 320724
得到的结果是这样的
dm       nmu

320324   1
320325   1
320382   3
320721   5
320724   6

使用语句

SELECT dm,COUNT(1)nmu
FROM (
SELECT *
from [huang] 
UNION ALL 
SELECT *
FROM [huang2]  )a
GROUP BY dm
就可以 但是 我dm的字段还要关联另外一个表,需要根据dm的信息获取具体的中文名称
比如这样left outer join info i on (a.dm=i.dm)这个怎么关联啊 
我自己写了一个语句是这样的

SELECT * FROM(
SELECT dm,COUNT(1)nmu
FROM (
SELECT *
from [huang] 
UNION ALL 
SELECT *
FROM [huang2]  )a
GROUP BY dm
)as ai left outer join info i on (ai.dm=i.dm)

但是每一条数据都会重复一次,求大神帮助 谢谢
最理想的结果是这样的
dm       nmu    info

320324   1      中文名称1
320325   1      中文名称2
320382   3      中文名称3
320721   5      中文名称4
320724   6      中文名称5
------解决方案--------------------
试试这个:

SELECT ai.*,
       (select INFO from info i where ai.dm=i.dm) as info
FROM
(
SELECT dm,COUNT(1)nmu
FROM (
SELECT *
from [huang] 
UNION ALL 
SELECT *
FROM [huang2]  )a
GROUP BY dm
)as ai