不使用临时表,仅使用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。
總結
以上是生活随笔為你收集整理的不使用临时表,仅使用select实现查询出多行常数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超强JSP防SQL注入攻击
- 下一篇: jsp mysql 注入攻击实例