不使用临时表,仅使用select实现查询出多行常数

 

今天在做项目的时候,突然需要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。

 

 

 

 

你可能感兴趣的:(数据库_原创区)