读书人

union合并的有关问题请指点迷津

发布时间: 2012-01-18 00:23:26 作者: rapoo

union合并的问题,请大虾指点迷津
SELECT c.Name AS PayMethodName, b.Name AS DepartmentName, 1 AS COUNT
FROM crm_Order a LEFT OUTER JOIN
crm_Group b ON b.ID = a.DepartmentID LEFT OUTER JOIN
crm_Enumerate c ON c.ID = a.PayMethod
WHERE (a.InsertDate BETWEEN '20070101 ' AND '20070102 ')

UNION

SELECT '无 ' AS PayMethodName, crm_Group.Name AS DepartmentName,0 AS COUNT
FROM dbo.crm_Group
WHERE crm_Group.ParentID = 425

总共查询113条,但是我单独运行第一个条sql就有249条 请问怎么回事?

[解决办法]
SELECT c.Name AS PayMethodName, b.Name AS DepartmentName, 1 AS COUNT
FROM crm_Order a LEFT OUTER JOIN
crm_Group b ON b.ID = a.DepartmentID LEFT OUTER JOIN
crm_Enumerate c ON c.ID = a.PayMethod
WHERE (a.InsertDate BETWEEN '20070101 ' AND '20070102 ')

UNION ALL ------ 加个 all 试试

SELECT '无 ' AS PayMethodName, crm_Group.Name AS DepartmentName,0 AS COUNT
FROM dbo.crm_Group
WHERE crm_Group.ParentID = 425
[解决办法]
SELECT c.Name AS PayMethodName, b.Name AS DepartmentName, 1 AS COUNT
FROM crm_Order a LEFT OUTER JOIN
crm_Group b ON b.ID = a.DepartmentID LEFT OUTER JOIN
crm_Enumerate c ON c.ID = a.PayMethod
WHERE (a.InsertDate BETWEEN '20070101 ' AND '20070102 ')

UNION ALL

SELECT '无 ' AS PayMethodName, crm_Group.Name AS DepartmentName,0 AS COUNT
FROM dbo.crm_Group
WHERE crm_Group.ParentID = 425
[解决办法]
union 会合并 相同的记录,俩个select 都加上distinct 这样再试一下
SELECT distinct c.Name AS PayMethodName, b.Name AS DepartmentName, '1 ' AS [COUNT]
FROM crm_Order a LEFT OUTER JOIN
crm_Group b ON b.ID = a.DepartmentID LEFT OUTER JOIN
crm_Enumerate c ON c.ID = a.PayMethod
WHERE (a.InsertDate BETWEEN '20070101 ' AND '20070102 ')
UNION
SELECT distinct '无 ' AS PayMethodName, crm_Group.Name AS DepartmentName, '0 ' AS [COUNT]
FROM dbo.crm_Group
WHERE crm_Group.ParentID = 425
[解决办法]
都是一样的回答,顶
[解决办法]
单独运行第一个条sql就有249条--- 这个里面的数据一定有重复的

union all 标志表示在并集中保留重复项

读书人网 >SQL Server

热点推荐