微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 将多行插入到只有一个值更改的表中

假设我有一个包含以下列的表:

场1 |场2 | field3 |字段4

我想在此表中插入多行,但field1,field2和field3的值对于每一行都是相同的.只有field4的值会改变.

显然我可以单独插入每一行,但结果查询会有点难看,我想知道是否有更有效/更优雅的方法来做到这一点.

我想到了这样的事情:

insert into my_table (field1,field2,field3,field4) values (foo,bar,baz,('value one','value two','value three','value four'))

结果将是:

field1 | field2 | field3 | field4
foo    | bar    | baz    | value one
foo    | bar    | baz    | value two
foo    | bar    | baz    | value four
foo    | bar    | baz    | value five

实际上,’field4’列是一个字符串类型,当我编写查询时,不同的值是已知的.没有必要从桌子或任何东西中获取它们(尽管如果可能的话,我对能够做到这一点的解决方案感兴趣)
这是可能的还是我必须单独写每个插件

编辑:我已经更改了问题,以更清楚地更改列的数据类型(一般文本数据)以及数据来自何处.对于那些已经回答没有这些信息的人抱歉.

谢谢.

解决方法

您可以使用Nicholas Krasnov的答案的变体和case语句来设置字符串值:
insert into my_table(field1,field4)
select 'foo','bar','baz',case level
    when 1 then 'value one'
    when 2 then 'value two'
    when 3 then 'value three'
    when 4 then 'value four'
  end
from dual
connect by level <= 4;

select * from my_table;

FIELD1 FIELD2 FIELD3 FIELD4             
------ ------ ------ --------------------
foo    bar    baz    value one            
foo    bar    baz    value two            
foo    bar    baz    value three          
foo    bar    baz    value four

SQL Fiddle.

添加更多行/值只需要更改级别限制和额外的子句匹配. (like this).如果您的号码不匹配,您也可以在其他地方发出警告.顺便提一下,哪个字符串值与哪个级别值相关并没有特别的意义.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐