【问题标题】:SQL query for insert into with a set of constants使用一组常量进行插入的 SQL 查询
【发布时间】:2010-09-22 14:47:19
【问题描述】:

似乎应该有一个查询,但我想不出该怎么做。

我有一个包含两个字段的复合主键表,我想用数据填充,

我可以从一个表中插入来填充一半的键,但我想用一组常量(0、3、5、6、9)等填充另一半......

所以最终的结果应该是这样的

+--------------+
|AwesomeTable  |
+--------------+
| Id1   | Id2  |
| 1     | 0    |
| 1     | 3    |
| 1     | 5    |
| 1     | 6    |
| 1     | 9    | 
| 2     | 0    |
| 2     | 3    |
| ...   | ...  |
+--------------+   

我已经插入到 awesometable (id1, id2) select id1, [need something here] from table1 [need else here]

【问题讨论】:

    标签: select insert sql


    【解决方案1】:

    我有一个有 2 个主键的表

    不,你没有。一张表只能有一个主键。您可能指的是复合主键。

    我相信你想要这个:

    INSERT
    INTO    awesometable (id1, id2)
    SELECT  t1.id1, q.id2
    FROM    table1 t1
    CROSS JOIN
            (
            SELECT  0 AS id2
            UNION ALL
            SELECT  3
            UNION ALL
            SELECT  5
            UNION ALL
            SELECT  6
            UNION ALL
            SELECT  9
            ) q
    

    ,或Oracle:

    INSERT
    INTO    awesometable (id1, id2)
    SELECT  t1.id1, q.id2
    FROM    table1 t1
    CROSS JOIN
            (
            SELECT  0 AS id2
            FROM    dual
            UNION ALL
            SELECT  3
            FROM    dual
            UNION ALL
            SELECT  5
            FROM    dual
            UNION ALL
            SELECT  6
            FROM    dual
            UNION ALL
            SELECT  9
            FROM    dual
            ) q
    

    【讨论】:

      【解决方案2】:

      如果我理解正确,也许你可以使用这样的东西:

      insert into awesometable (id1, id2) 
      select id1, (select top 1 id2 from table2 where /*a condition here to retreive only one result*/) 
      from table1
      

      【讨论】:

      • 对不起,我可能不够清楚,没有表2。它只是一组常量,也许你会称它为临时表。
      猜你喜欢
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      • 2013-10-14
      • 2013-11-26
      相关资源
      最近更新 更多