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

求SQL语句,同步记录
大家好!
  现在两张表,表A,表B.表结构相同。如何将表A中的记录同步到表B中。见下图。将表A中的红色字体记录移动表B中!


------最佳解决方案--------------------
SELECT 订单号,客户,数量 FROM A WHERE NOT EXISTS(SELECT 订单号,客户,数量 FROM B where a.主键=b.主键)主键具体要看你的表结构
------其他解决方案--------------------
引用:
为什么这条语句不行呢!SELECT 订单号,客户,数量 FROM A WHERE NOT EXISTS(SELECT 订单号,客户,数量 FROM B)


--用exists是这样的
declare @A table (订单号 int,客户 varchar(1),数量 int)
insert into @A
select 1000,'A',100 union all
select 2000,'B',200 union all
select 3000,'C',300

declare @B table (订单号 int,客户 varchar(1),数量 int)
insert into @B
select 1000,'A',100 union all
select 2000,'B',200

SELECT 订单号,客户,数量 FROM @A a
WHERE NOT EXISTS(SELECT TOP 1 * FROM @b b where a.订单号=b.订单号
and a.客户=b.客户 and a.数量=b.数量)

/*
订单号         客户   数量
----------- ---- -----------
3000        C    300
*/

------其他解决方案--------------------
insert into B
select * 
from a
except
select *
from b
------其他解决方案--------------------
为什么这条语句不行呢!SELECT 订单号,客户,数量 FROM A WHERE NOT EXISTS(SELECT 订单号,客户,数量 FROM B)
------其他解决方案--------------------
DBA_Huangzj 您好!运行你的语句出现以下错误:
消息 421,级别 16,状态 1,第 1 行
text 数据类型不能选为 DISTINCT,因为它不可比。
------其他解决方案--------------------
晕,你的表还有text类型?那用4楼那个方法吧