跪求一句sql语句(合并两个字段)

FlyBee 2009-03-19 10:32:05
Accesss 数据库表 Table_1 如

id name1 name2
1 张三 张三
2 李四 马六
3 李四 钱七
4 王五 熊八
5 马六 熊八
-----------------------
要合并 name1 name2 并且不能重复
查出结果如下
temp
张三
李四
王五
马六
钱七
熊八
------------------------
请高人指点

...全文
1558 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanglikai 2009-03-19
  • 打赏
  • 举报
回复
不错!
FlyBee 2009-03-19
  • 打赏
  • 举报
回复
OK了谢谢 大家
claro 2009-03-19
  • 打赏
  • 举报
回复
帮顶。
ACCESS不知道是否有联机帮助
dawugui 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 YxFlyBee 的回复:]
union 是什么意思能在Access里面用么
[/Quote]
UNION 运算符
将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行。这与使用联接组合两个表中的列不同。

使用 UNION 组合两个查询的结果集的两个基本规则是:

所有查询中的列数和列的顺序必须相同。


数据类型必须兼容。
语法
{ < query specification > | ( < query expression > ) }
UNION [ ALL ]
< query specification | ( < query expression > )
[ UNION [ ALL ] < query specification | ( < query expression > )
[ ...n ] ]

参数
< query_specification > | ( < query_expression > )

是查询规范或查询表达式,用以返回与另一个查询规范或查询表达式所返回的数据组合的数据。作为 UNION 运算一部分的列定义可以不相同,但它们必须通过隐性转换实现兼容。

下表说明数据类型与相应 (ith) 列的选项的比较规则。

ith 列的数据类型 结果表中 ith 列的数据类型
非数据兼容类型(数据转换不由 Microsoft® SQL Server™ 隐性处理)。 SQL Server 返回的错误。
长度为 L1 和 L2 的固定长度 char。 长度与 L1 和 L2 中较长的那个相等的固定长度 char。
长度为 L1 和 L2 的固定长度 binary。 长度与 L1 和 L2 中较长的那个相等的固定长度 binary。
任一列或两列都是可变长度 char。 长度与为 ith 列指定的最大长度相等的可变长度 char。
任一列或两列都是可变长度 binary。 长度与为 ith 列指定的最大长度相等的可变长度 binary。
两列都是数字数据类型(如 smallint、int、float、money)。 与两列的最大精度相等的数据类型。例如,如果表 A 的 ith 列是 int 类型,表 B 的 ith 列是 float 类型,则 ith 列在结果表中的数据类型是 float,因为 float 比 int 更精确。
两列的描述都指定 NOT NULL。 指定 NOT NULL。


UNION

指定组合多个结果集并将其作为单个结果集返回。

ALL

在结果中包含所有的行,包括重复行。如果没有指定,则删除重复行。

FlyBee 2009-03-19
  • 打赏
  • 举报
回复
union 是什么意思能在Access里面用么
zjl8518 2009-03-19
  • 打赏
  • 举报
回复
select name1 name from tb
union
select name2 name from tb
order by name
ChinaJiaBing 2009-03-19
  • 打赏
  • 举报
回复

declare @tb table (id int,name1 varchar(10),name2 varchar(10))
insert into @tb select 1,'张三','张三'
union all select 2,'李四','马六'
union all select 3,'李四','钱七'
union all select 4,'王五','熊八'
union all select 5,'马六','熊八'
select name1 as name from(
select name1 from @tb
union
select name2 from @tb) tb


name
----------
李四
马六
钱七
王五
熊八
张三

(6 行受影响)
牙签是竹子的 2009-03-19
  • 打赏
  • 举报
回复
luoxi1124 2009-03-19
  • 打赏
  • 举报
回复
Accesss,里面有直接去重复的选项,要做的就是把两列合并就好.
ks_reny 2009-03-19
  • 打赏
  • 举报
回复

select name1 from tb
union
select name2 from tb
luoxi1124 2009-03-19
  • 打赏
  • 举报
回复
最直接的办法,分别查询两个字段

select name1 from table_1-- 得出第一个字段

select name2 from table_1-- 得出第二个字段


再将结果合并,对结果使用distinc进行去重复.
还有很多办法,这个是最好理解的了把。
dawugui 2009-03-19
  • 打赏
  • 举报
回复
--T-SQL如下,access不知道.

create table tb(id int,name1 varchar(10), name2 varchar(10))
insert into tb values(1 , '张三' , '张三')
insert into tb values(2 , '李四' , '马六')
insert into tb values(3 , '李四' , '钱七')
insert into tb values(4 , '王五' , '熊八')
insert into tb values(5 , '马六' , '熊八')
go

select name1 name from tb
union
select name2 name from tb
order by name

drop table tb


/*
name
----------
李四
马六
钱七
王五
熊八
张三

(所影响的行数为 6 行)

*/
dawugui 2009-03-19
  • 打赏
  • 举报
回复
select name1 from tb
union
select name2 from tb

22,228

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧