【问题标题】:insert using loop in sql在sql中使用循环插入
【发布时间】:2019-02-06 00:04:19
【问题描述】:

我是 sql 的新手,我只想知道这是否可能?如果是的话,有人可以帮助我吗?

这是场景:

我有两个表,名为表 A 和表 B,如下图链接所示。

表 A 有 myId 和 desc 列。 表 B 有 myId 和其他列。

这是一个问题,我想插入(不更新假设图片链接中的场景,但表 B 为空)表 A 中突出显示的 myId 到表 B。

【问题讨论】:

  • 我看不出A 与这个问题有什么关系。你是不是通过某种特殊的逻辑选择了“2”?
  • 认为这是一个简单的insert B(myid) select myid from A。但是您将需要更多关于您希望结果看起来像什么以及其他列来自何处的详细信息。另外,请不要将问题中的表格包含在图像中。理想情况下,一个创建表后跟插入将使人们非常容易回答。
  • 不,我的意思只是显示“假设结果”,如果可以将表 A 中突出显示的值插入表 B 中。对不起,如果它让你感到困惑。跨度>
  • ID 可以轻松插入。不清楚的是为什么你有 4 行。这里的逻辑是什么。我在下面看到的答案假设您只需要 4 行,这是正确的吗?
  • 我会更新这个。汤姆C

标签: mysql sql database rows sql-insert


【解决方案1】:

根据您的描述,您可以使用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';

这假设 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;

【讨论】:

  • 它在 A 中有一些重要的原因,因为目标是获取将插入 B 中的 A 中的值。这可以在 sql 中使用循环实现吗?是的 thisTableId 是自动递增的。
【解决方案2】:

这在循环中显示了这一点,假设 MYID 实际上是从 TableA 中选择的。但它回答了关于循环的问题。

;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=2
cross join n

【讨论】:

    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 2020-02-08
    • 2016-05-25
    • 1970-01-01
    相关资源
    最近更新 更多