带条件的UNION, 或者看看如何写SQL

pennymay 2009-04-02 08:21:13
表A

ID NAME TIME CODE
1 shan 11-01-2009 A
2 shan 11-01-2009 B
2 shan 11-01-2009 D
2 shan 11-01-2009 E
3 shan 11-01-2009 D


表B

ID NAME TIME CODE
1 shan 12-01-2009 T
3 shan 12-01-2009 S
3 shan 12-01-2009 M
4 shan 12-01-2009 Z
5 shan 12-01-2009 S

表A Union 表B on 表A.ID = 表B.ID

结果
ID NAME TIME CODE
1 shan 11-01-2009 A
3 shan 11-01-2009 D
1 shan 12-01-2009 T
3 shan 12-01-2009 S
3 shan 12-01-2009 M

谢谢大家
...全文
1063 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
htl258_Tony 2009-04-02
  • 打赏
  • 举报
回复
select a.* from a join b on a.id=b.id
union
select b.* from a join b on a.id=b.id
不能加那个all,Modify
htl258_Tony 2009-04-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 pennymay 的帖子:]
表A

ID NAME TIME CODE
1 shan 11-01-2009 A
2 shan 11-01-2009 B
2 shan 11-01-2009 D
2 shan 11-01-2009 E
3 shan 11-01-2009 D


表B

ID NAME TIME CODE
1 shan 12-01-2009 T
3 shan 12-01-2009 S
3 shan 12-01-2009 M
4 shan 12-01-2009 Z
5 shan …
[/Quote]
select a.* from a join b on a.id=b.id
union all
select b.* from a join b on a.id=b.id
hndth 2009-04-02
  • 打赏
  • 举报
回复
友情up
竹叶青suhy 2009-04-02
  • 打赏
  • 举报
回复
select * from A where exists(select 1 from B where id=A.id) 
union all
select * from B where exists(select 1 from A where id=B.id)
qizhengsheng 2009-04-02
  • 打赏
  • 举报
回复
可以jf不?
ws_hgo 2009-04-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fan_xiaohu 的回复:]
打扰一下2楼,您怎么知道'1','3'在两个表里会存在呢~
[/Quote]
2楼的不好
用我的
应该是先链接然后在union
you_tube 2009-04-02
  • 打赏
  • 举报
回复
DECLARE @A table  (ID int ,[NAME] varchar(20),[TIME] varchar(20), CODE varchar(8))
insert into @A
select 1,'shan','11-01-2009','A' union all
select 2,'shan','11-01-2009','B' union all
select 2,'shan','11-01-2009','D' union all
select 2,'shan','11-01-2009','E' union all
select 3,'shan','11-01-2009','D'

declare @B table (ID int ,[NAME] varchar(20),[TIME] varchar(20), CODE varchar(8))
insert into @B
select 1,'shan','12-01-2009','T' union all
select 3,'shan','12-01-2009','S' union all
select 3,'shan','12-01-2009','M' union all
select 4,'shan','12-01-2009','Z' union all
select 5,'shan','12-01-2009','S'

select * from @A A where exists(select 1 from @B where id=A.id)
union all
select * from @B B where exists(select 1 from @A where id=B.id)
/*
ID NAME TIME CODE
----------- -------------------- -------------------- --------
1 shan 11-01-2009 A
3 shan 11-01-2009 D
1 shan 12-01-2009 T
3 shan 12-01-2009 S
3 shan 12-01-2009 M*/
ws_hgo 2009-04-02
  • 打赏
  • 举报
回复
create table #A (ID int ,[NAME] varchar(20),[TIME] varchar(20), CODE varchar(8))
insert into #A
select 1,'shan','11-01-2009','A' union all
select 2,'shan','11-01-2009','B' union all
select 2,'shan','11-01-2009','D' union all
select 2,'shan','11-01-2009','E' union all
select 3,'shan','11-01-2009','D'

create table #B (ID int ,[NAME] varchar(20),[TIME] varchar(20), CODE varchar(8))
insert into #B
select 1,'shan','12-01-2009','T' union all
select 3,'shan','12-01-2009','S' union all
select 3,'shan','12-01-2009','M' union all
select 4,'shan','12-01-2009','Z' union all
select 5,'shan','12-01-2009','S'

select A.* from #A A join #B B on B.ID=A.ID
union
select B.* from #B B join #A A on B.ID=A.ID

ID NAME TIME CODE
----------- -------------------- -------------------- --------
1 shan 11-01-2009 A
1 shan 12-01-2009 T
3 shan 11-01-2009 D
3 shan 12-01-2009 M
3 shan 12-01-2009 S

(5 行受影响)
small_well 2009-04-02
  • 打赏
  • 举报
回复

create table 表A(ID int,NAME varchar(10),TIME datetime,CODE char(2))
create table 表B(ID int,NAME varchar(10),TIME datetime,CODE char(2))
insert into 表A
select 1,'shan','11-01-2009','A' union all
select 2,'shan','11-01-2009','B' union all
select 2,'shan','11-01-2009','D' union all
select 2,'shan','11-01-2009','E' union all
select 3,'shan','11-01-2009','D'

insert into 表B
select 1,'shan','12-01-2009','T' union all
select 3,'shan','12-01-2009','S' union all
select 3,'shan','12-01-2009','M' union all
select 4,'shan','12-01-2009','Z' union all
select 5,'shan','12-01-2009','S'

select ID,NAME,TIME=convert(varchar(10),TIME,110),CODE from 表A where id in (select id from 表B)
union all
select ID,NAME,TIME=convert(varchar(10),TIME,110),CODE from 表B where id in (select id from 表A)


/*
结果
ID NAME TIME CODE
1 shan 11-01-2009 A
3 shan 11-01-2009 D
1 shan 12-01-2009 T
3 shan 12-01-2009 S
3 shan 12-01-2009 M
*/
drop table 表A
drop table 表B
fan_xiaohu 2009-04-02
  • 打赏
  • 举报
回复
打扰一下2楼,您怎么知道'1','3'在两个表里会存在呢~
fan_xiaohu 2009-04-02
  • 打赏
  • 举报
回复

select * from A WHERE A.ID IN (SELECT DISTINCT ID FROM B )
UNION ALL
select * from B WHERE B.ID IN (SELECT DISTINCT ID FROM A)
dpzc_love 2009-04-02
  • 打赏
  • 举报
回复

SELECT * FROM T1 A WHERE EXISTS(SELECT 1 FROM T2 B WHERE A.ID = B.ID )
UNION ALL
SELECT * FROM T2 A WHERE EXISTS(SELECT 1 FROM T1 B WHERE A.ID = B.ID )
claro 2009-04-02
  • 打赏
  • 举报
回复
/*
表A

ID NAME TIME CODE
1 shan 11-01-2009 A
2 shan 11-01-2009 B
2 shan 11-01-2009 D
2 shan 11-01-2009 E
3 shan 11-01-2009 D


表B

ID NAME TIME CODE
1 shan 12-01-2009 T
3 shan 12-01-2009 S
3 shan 12-01-2009 M
4 shan 12-01-2009 Z
5 shan 12-01-2009 S

表A Union 表B on 表A.ID = 表B.ID

结果
ID NAME TIME CODE
1 shan 11-01-2009 A
3 shan 11-01-2009 D
1 shan 12-01-2009 T
3 shan 12-01-2009 S
3 shan 12-01-2009 M
*/
create table #A (ID int ,[NAME] varchar(20),[TIME] varchar(20), CODE varchar(8))
insert into #A
select 1,'shan','11-01-2009','A' union all
select 2,'shan','11-01-2009','B' union all
select 2,'shan','11-01-2009','D' union all
select 2,'shan','11-01-2009','E' union all
select 3,'shan','11-01-2009','D'

create table #B (ID int ,[NAME] varchar(20),[TIME] varchar(20), CODE varchar(8))
insert into #B
select 1,'shan','12-01-2009','T' union all
select 3,'shan','12-01-2009','S' union all
select 3,'shan','12-01-2009','M' union all
select 4,'shan','12-01-2009','Z' union all
select 5,'shan','12-01-2009','S'

select * from #A where ID in ('1','3')
UNION
select * from #B where ID in ('1','3')

ID NAME TIME CODE
1 shan 11-01-2009 A
1 shan 12-01-2009 T
3 shan 11-01-2009 D
3 shan 12-01-2009 M
3 shan 12-01-2009 S
playwarcraft 2009-04-02
  • 打赏
  • 举报
回复
select * from A where exists(select 1 from B where id=A.id)
union all
select * from B where exists(select 1 from A where id=B.id)
代码下载地址: https://pan.quark.cn/s/ee8627e4e6d7 ABAP调试器是一种功能强大的工具,可用于在执行期间对ABAP代码进行检验。除了常规的核心功能(例如逐行运行代码以及检验变量、字段符号和引用的值)之外,它还提供了一些辅助性的特性,能够简化并压缩调试会话的时长。并非所有使用者都熟悉这些辅助特性。SAP ABAP调试器是处理和优化ABAP代码开发与维护工作的核心资源,它配备了多样的功能来协助开发人员在运行状态下进行检验和排除故障。此资源着重阐述了ABAP调试器的一些高级特性,涵盖了深入分析调用堆栈、系统级调试、更新会话调试以及提升调试效率的方法。 1. **深入分析调用堆栈**:除了常规的应用程序调试,开发人员有时需要对调用堆栈的内部层级进行深入调试,特别是在错误出现在异步执行的更新处理或系统级程序时。通过启用**系统级调试**,可以访问通常不公开的系统代码,但这也会导致调用堆栈的显著增加,因此需要审慎操作。 2. **系统级调试**:对于不含业务逻辑的系统级程序,开发人员通常无需进行调试。然而,在特定情形下,例如进行错误追踪时,可能需要进入系统代码。借助调试器的“系统调试启用/禁用”选项,可以赋予对系统程序的调试权限。 3. **更新会话调试**:在处理异步更新任务,例如持久化业务数据时,错误可能发生在更新任务内部。激活**更新会话调试**,在更新任务完成后,调试器将自动启动,展示执行路径。比如,在变更成本中心后,通过输入调试指令 "/h" 启动调试,保存后能够看到更新过程中的错误。 4. **分析调用堆栈**:在进行深入调试时,调用堆栈是至关重要的。通过分析调用堆栈,能够定位到引发问题的具体位置,如在VB_V2_NORMAL...

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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