我是sql的新手我只是想知道这是否可行?如果是的话,有人能帮我吗。以下是场景:我有两个名为表a和表b的表,如下面的图片链接所示。表a有myid和desc列。表b有myid和其他列。这里有一个问题,我想将表a中突出显示的myid插入表b(而不是更新,假设imagelink中的场景表b是空的)。
nmpmafwu1#
根据你的描述,你可以用 insert . . . select . 我看不出是什么 A 和这个问题有关。
insert . . . select
A
insert into b (myId, etc1, etc2, etc3) select 2, 'some data here', 'some data here', 'some data here' union all select 2, 'some data here', 'some data here', 'some data here' union all select 2, 'some data here', 'some data here', 'some data here';
insert into b (myId, etc1, etc2, etc3)
select 2, 'some data here', 'some data here', 'some data here'
union all
select 2, 'some data here', 'some data here', 'some data here';
这是假设 thisTableId 是自动递增的。您可以同样轻松地从表中获取数据:
thisTableId
insert into b (myId, etc1, etc2, etc3) select a.myid, 'some data here', 'some data here', 'some data here' from a where a.myid = 2 union all select a.myid, 'some data here', 'some data here', 'some data here' from a where a.myid = 2 union all select a.myid, 'some data here', 'some data here', 'some data here' from a where a.myid = 2;
select a.myid, 'some data here', 'some data here', 'some data here'
from a
where a.myid = 2
where a.myid = 2;
e0bqpujr2#
这在一个循环中显示了这一点,假设myid实际上是从表中选择的。但它回答了关于循环的问题。
;WITH n AS ( SELECT 1 as n UNION ALL SELECT 1 + n as n from n WHERE n < 4 )insert into b (myId, etc1, etc2, etc3)select myid, 'some data here', 'some data here', 'some data here'from TableA where myID=2cross join n
;WITH n AS (
SELECT 1 as n
UNION ALL
SELECT 1 + n as n from n WHERE n < 4
)
select myid, 'some data here', 'some data here', 'some data here'
from TableA where myID=2
cross join n
2条答案
按热度按时间nmpmafwu1#
根据你的描述,你可以用
insert . . . select
. 我看不出是什么A
和这个问题有关。这是假设
thisTableId
是自动递增的。您可以同样轻松地从表中获取数据:
e0bqpujr2#
这在一个循环中显示了这一点,假设myid实际上是从表中选择的。但它回答了关于循环的问题。