我需要将新数据插入参数表。这是一个INSERT INTO子句类型问题。
表A登台
Id Owner Brand CreationDate CreationUser
1 Shakespeare Rolls Royce 2011-04-22 Burbage
3 Aristotle Tesla 2014-12-25 Plato
9 Einstein MayFlower 2015-01-01 Bohr
表B参数化
Id BrandDescription
1 Rolls Royce
2 Tesla
3 MayFlower
将品牌(表b)的ID映射到表A的品牌后的表C
Id Owner BrandId CreationDate CreationUser
1 Shakespeare 1 2011-04-22 Burbage
3 Aristotle 2 2014-12-25 Plato
9 Einstein 3 2015-01-01 Bohr
现在假设在表A登台中输入了两个新记录。
Id Owner Brand CreationDate CreationUser
1 Shakespeare Rolls Royce 2011-04-22 Burbage
3 Aristotle Tesla 2014-12-25 Plato
9 Einstein MayFlower 2015-01-01 Bohr
17 John Bardeen Tesla2 2017-01-02 Nikola
18 Sanger Phaeton 2018-03-01 Curie
我想将两个新品牌添加到参数表B ... 因此可能是:
Id BrandDescription CreationDate CreationUser
1 Rolls Royce 2011-04-22 Automatic
2 Tesla 2014-12-25 Automatic
3 MayFlower 2015-01-01 Automatic
4 Tesla2 2017-01-02 Automatic
5 Phaeton 2018-03-01 Automatic
我尝试过:
If not exists (select 1 from
from table_b tb
inner join table_a ta on tb.BrandDescription=ta.Brand) insert into table_b
values (ta.Brand,getdate(),'Automatic')
它抛出一个错误: 无法绑定多部分标识符“ ta.Brand”。
它必须始终检查参数化表,以检查表A阶段的新记录中是否存在任何品牌...因此,由于旧参数化表中不存在Tesla2和Phaeton,因此应将其插入。否则,什么也不会发生。
再创一条新记录
(用于表A)
Id Owner Brand CreationDate CreationUser
(...)
17 John Bardeen Tesla2 2017-01-02 Nikola
18 Sanger Phaeton 2018-03-01 Curie
19 Sagan Tt: 2019-02-01 Lok
如果品牌中有:,则不应将其插入参数化表B中。
If not exists (select 1
from table_b tb
inner join table_a ta on tb.BrandDescription=ta.Brand and ta.Brand not like '%' + ':' + '%')
insert into table_b
values (ta.Brand,getdate(),'Automatic')
问题是将表A的品牌分配给参数化表B的BrandDescription。
答案 0 :(得分:1)
您可以尝试在没有if子句的情况下执行此操作,这是在尝试访问insert语句范围内不存在的列(ta.brand)。
例如:
{{1}}