两条SQL查询的数据需要叠加在一起
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两条SQL查询的数据需要叠加在一起相关的知识,希望对你有一定的参考价值。
第一条查询:SELECT * FROM [TM_Talents] WHERE UserName IN (SELECT DISTINCT (TalentsUser) FROM [TM_RProduction]
第二条查询:SELECT * FROM TM_Talents WHERE dzrc = 1
现在需要一条SQL语句把两条查询的记录都联合在一起,也就是这条语句查询的出来的结果既有第一条的结果也要有第二条的结果,而且要把重复的记录去除
淡如水10000 我用UNION出错
淡如水10000 我括号已经加了。,但出现“不能以DISTINCT方式选择text、ntext或image数据类型”
可以不用使用distinct,只是使用union all与except关键字就可以了,
1.首先 将 第一条查询 中包含 第二条查询 的所有数据都过滤掉,也就是只剩下第一条查询中有,而 第二条查询中没有的数据
2.将第1步的结果记录集 与 第二条查询的结果记录集进行 union all处理
下面是具体的SQL 语句:
SELECT * FROM [TM_Talents] WHERE UserName IN (SELECT DISTINCT (TalentsUser) FROM [TM_RProduction]
except
SELECT * FROM TM_Talents WHERE dzrc = 1
union all
SELECT * FROM TM_Talents WHERE dzrc = 1
也可以直接用union(会自动将完全一样的记录过滤只剩下一条)
SELECT * FROM [TM_Talents] WHERE UserName IN (SELECT DISTINCT (TalentsUser) FROM [TM_RProduction] )
union
SELECT * FROM TM_Talents WHERE dzrc = 1
至于说出现 “不能以DISTINCT方式选择text、ntext或image数据类型”
应该是TalentsUser字段的数据类型的问题,^_^,
呵呵,希望能有帮助,^_^ 参考技术B union 就可以了
SELECT * FROM [TM_Talents] WHERE UserName IN (SELECT DISTINCT (TalentsUser) FROM [TM_RProduction] )
union
SELECT * FROM TM_Talents WHERE dzrc = 1
少了)
顺便说下union all 是把全部记录输出本回答被提问者采纳 参考技术C 试试用 union 方法,前题是两个表查询结果的列数一样,而且每一列的数据类型也一样.
例:
select 111 as 'A','ABC' as 'B','2008-10-10' as 'C',321.123 as 'D'
union
select 222,'XYZ','2008-12-31',789.987
如果要除去重复的可以对上面的结果进行唯一处理,例如:
select distinct * from
(
select 111 as 'A','ABC' as 'B','2008-10-10' as 'C',321.123 as 'D'
union
select 222,'XYZ','2008-12-31',789.987
)a 参考技术D 先把你要选择的字段Cast 一下,再select
cast ( 数据类型1 AS 数据类型2) as 新的字段别名
!!!有前提哈,数据类型1 到 数据类型2 要可转换才行
SQL中的union
在SQL中,如果我们查询一个班级的考试成绩数据,再统计考试成绩的总和,我们使用以下两条语句:
select StudentName,Grade from Student select ‘总成绩‘,SUM(Grade)from Student
执行此两条代码,结果会分别显示在两个表中,我们该如何使两条数据整合在一起?这就用到了union集合运算符,union对两个集合进行操作,两个集合需要有相同的列名,两个集合的列类型应该是相符的,最终列名以第一个集合列名为准。
我们上面的代码片段恰好符合合并的要求,我们只需要在其之间添加union即可
select StudentName,Grade from Student union select ‘总成绩‘,SUM(Grade)from Student
除此之外还有一种联合方式为:union all
此联合方式效率更高,因为它不会进行重复查询,而union会清除重复的多余项,相同的数据只会出现一次。
以上是关于两条SQL查询的数据需要叠加在一起的主要内容,如果未能解决你的问题,请参考以下文章