SQL如何根据A表内容更新B表.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL如何根据A表内容更新B表.相关的知识,希望对你有一定的参考价值。
表A有ai1,ai2,ai3.3个用户记录.表B有表A用户每天2个的记录.如图
请问当B表中没有A表用户的记录或者只有一个记录时,如何通过语句增加缺失的那部分记录?
Time是A表用户在B表加记录时的自动时间.不固定的.
set @sql='';
select @sql=@sql+(
case(count(b.time))
--若没有记录,则插入两条
when 0 then 'insert into [表B] select '''+a.name+''',getdate() union all select '''+a.name+''',getdate();'
--若已有一条记录,则再插入一条
when 1 then 'insert into [表B] select '''+a.name+''',getdate();'
--若已有两条或以上,则不再插入
else ' '
end)
from [表A] a left join [表B] b on a.name=b.name
group by a.name;
exec(@sql);
假设表B中本来是这样的:
那么执行上面语句后,表B变成这样:
追问测试有效
参考技术A 一条sql语句恐怕是搞不定的,可用A表游标遍历,查询b表中的记录数,当记录数为n且n<2时,执行2-n次插入语句。 参考技术B 首先表格设计就有问题,b表应该设置a表的外键,a表应该设计索引字段ID,b表的name字段要换成ID字段,这样a表修改name时才不会要同时修改b表然后说外键,b表要对它依赖于a的字段设a对应字段的外键,右键表格、属性,在下面那个什么更新、删除那里将什么都不做改成级联,这样a表删除name就能自动把b的删掉,而且a没有的b加不进去。
最后你的问题用where b.name not in (select name from a)中文来的,不要直接复制 参考技术C 这B表是神马表。。。字段都能重复出现? ai1 ai2 ai3?什么意思
SQL数据库中如何从A表自动更新数据到B表?
假设有两张表,A表中有销售订单号,销售日期,货品名称,规格,型号,数量,销售单价,销售金额,审核人 字段,B表有订单号,销售日期,货品名称,规格,型号,数量,销售单价,销售金额,订单是否下达 字段, 希望当A表有新插入数据时并且审核人不为空时,自动更新到B表,当A表审核人为空时,自动删除B表中对应的数据,是如果B表中订但单是否下达标志为Y时,则不删除,当B表中订单是否下达标志为空时,则删除。
参考技术A SQL不能做这样的逻辑判断吧,应该使用java语言或者其他语言来控制判断吧,设置一下多表关系,然后在后台读出做判断,在通过使用hibernate关联关系,把表设成2个关联的对象。。。当你判断是需要增加的时候,把两个对象互相加到对方的对象中就可以(要注意的是在对象类:表中,要设定对方对象的属性),不知道能否给你带来有用的信息,望采纳。 参考技术B 写一个insert触发器在A表上自己根据想要的条件应该懂一点的就应该能写出来
insert触发器在你插入数据到A表的时候,你的数据在系统默认的inserted表中存着,你可以在这里面找条件 参考技术C 要实现两个表之间的数据的自动更新,可以采用触发器来实现,触发器的实现方法:
1、A表有数据更新的时候自动更新B表:
create or replace trigger tg after update on A for each row
begin
update B set xx=xx where b.aid = a.id;
end;
/
2、A表插入数据时,B表更新数据:
create or replace trigger tgg after insert on A for each row
begin
insert B values(xxxx);
end;
/
如果不需要每条数据都跟新,只需要在每次A更新的时候更新B,可以将后面的for each row去掉。 参考技术D 写个触发器trigger 第5个回答 推荐于2017-11-26 使用触发器
create trigger 触发器名称
on A
as
begin
declare @审核人 varchar(100)
select @审核人 = 审核人 from inserted
if @审核人 <> null
insert B ( 列名全写出来 )
else
delete B where 条件 and 标志 <> 'Y'
end追问
如果我只是从A表中选择几列来进行插入到B表,是否要写对应插入到B的哪几列的?
追答插入的话不用写对应到表B的哪几列的
本回答被提问者采纳以上是关于SQL如何根据A表内容更新B表.的主要内容,如果未能解决你的问题,请参考以下文章