今天在做项目的时候,突然需要insert到数据库中多条记录,但这些记录必须用一条insert语句插入数据库,这时候你会说可以用insert into
XXX select XXX句式,但更让人纠结的是,所有将要被insert 的数据都是常数,即不存在可以被select成多行的表!
倒是需要将一些常数变成多行或多条记录,怎么半呢?
我知道可以用select 1,2,3这种形式将多个常数组合成一行,但是如何将多个常数组合成多行呢?
百度知道上有位仁兄貌似提前遇到了我的问题:
http://zhidao.baidu.com/question/231435615.html
所以就有了如下的方式:
select * from (select 153 union select 154 union select 155)t(oid)
上面一句话返回一张table,名字是t,它只有一列,名字叫oid,table中有三行记录,分别是153,154,155:
Table t
oid
____
|153|
____
|154|
____
|155|
____
下面你应该知道怎么办了吧?
insert into XXX select XXX from (select 153 union select 154 union select 155)t(oid)
使用一条SQL即可实现多行insert。