代码之家  ›  专栏  ›  技术社区  ›  Shyju

如何将这3个SQL查询转换为一个?

sql
  •  2
  • Shyju  · 技术社区  · 15 年前

    是否仍然可以将下面的3个SQL查询转换为单个查询?

    insert into table1(Name,Age,Type) Select FirstName,Age,'Type1' FROM Table2 where Type='SK'
    insert into table1(Name,Age,Type) Select FirstName,Age,'Type23' FROM Table2 where Type='JK'
    insert into table1(Name,Age,Type) Select FirstName,45,'Type64' FROM Table2 where Type='YP'
    
    4 回复  |  直到 15 年前
        1
  •  10
  •   garik    15 年前
    insert into table1(Name,Age,Type) 
    Select FirstName,Age,'Type1' FROM Table2 where Type='SK'
    union all
    Select FirstName,Age,'Type23' FROM Table2 where Type='JK'
    union all
    Select FirstName,45,'Type64' FROM Table2 where Type='YP'
    
        2
  •  6
  •   Yves M.    15 年前
    insert into table1(Name,Age,Type) 
    Select FirstName, 
           CASE WHEN Type = 'YP' THEN 45 ELSE Age END, 
           CASE WHEN Type = 'SK' THEN 'Type1' etc.
    FROM Table2 
    where Type in ('SK', 'JK', 'YP')
    

    编辑:

    这取决于有多少种类型。也许另一个存储类型和相关文本的表(“类型”等)会更好,而不是一个巨大的案例。对这个年龄来说也是一样。

        3
  •  1
  •   Charles Bretana    15 年前

    尝试:

       Insert table1(Name,Age,Type)
        Select FirstName, 
             Case Type When 'YP' Then 45 Else Age End,
             'Type' + Case Type 
                        When 'SK' Then '1'
                        When 'JK' Then '23'
                        When 'YP' Then '64' End
        From Table2
        Where Type In ('SK', 'JK', 'YP') 
    
        4
  •  0
  •   Gareth Davis    15 年前

    尝试。。

    insert into table1(Name,Age,Type)  
    
    (Select FirstName,
    
      (case when type='YP' then
        45
      else
        age
      end) age,
    
      (case when type='SK' then
        'Type1'
      when type='JK' then
        'Type23'
      when type='YP' then
        'Type64'
      end) type
     FROM Table2 where Type in ('SK','JK','YP'))