SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。
1.INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:
--1.创建测试表
create TABLE Table1
(
a varchar(10),
b varchar(10),
c varchar(10),
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
create TABLE Table2
(
a varchar(10),
c varchar(10),
d int,
CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
GO
--2.创建测试数据
Insert into Table1 values('赵','asds','90')
Insert into Table1 values('钱','asds','100')
Insert into Table1 values('孙','asds','80')
Insert into Table1 values('李','asds',null)
GO
select * from Table2
--3.INSERT INTO SELECT语句复制表数据
Insert into Table2(a, c, d) select a,c,5 from Table1
GO
--4.显示更新后的结果
select * from Table2
GO
--5.删除测试表
drop TABLE Table1
drop TABLE Table2
2.SELECT INTO FROM语句
语句形式为:SELECT vale1, value2 into Table2 from Table1
MYSQL的为:Create table new_table_name (Select * from old_table_name);
要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。示例如下:
--1.创建测试表
create TABLE Table1
(
a varchar(10),
b varchar(10),
c varchar(10),
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
GO
--2.创建测试数据
Insert into Table1 values('赵','asds','90')
Insert into Table1 values('钱','asds','100')
Insert into Table1 values('孙','asds','80')
Insert into Table1 values('李','asds',null)
GO
--3.SELECT INTO FROM语句创建表Table2并复制数据
select a,c INTO Table2 from Table1
GO
--4.显示更新后的结果
select * from Table2
GO
--5.删除测试表
drop TABLE Table1
drop TABLE Table2
|
前奏Demo:
1.Action代码:
package com.demo.action;
import java.util.HashMap;
import java.util.Map;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class TagAction extends ActionSupport {
private Map map = new HashMap();
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
public String execute() throws Exception{
Book book = null;
for(int i=0;i<10;i++){
book = new Book(i,"book"+i);
map.put(i, book);
}
ServletActionContext.getRequest().getSession().setAttribute("map", map);
return SUCCESS;
}
}
class Book{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Book(int id,String name){
this.id = id;
this.name = name;
}
}
2.jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
</head>
<body>
<a href="/struts2/testMap.action">测试</a>
<table border="1">
<tr><td>遍历map中的key</td></tr>
<tr><td>ID</td></tr>
<s:iterator value="map.keySet()" id="bookId"> <!--value=“map.keys”也可以-->
<tr><td><s:property value="#bookId"/></td></tr>
</s:iterator>
</table>
<br>
<table border="1">
<tr><td colspan="2">通过Key遍历map中的value(value值是Book类型的对象)</td></tr>
<tr><td>ID</td><td>name</td></tr>
<s:iterator value="map.keySet()" id="bookId">
<tr>
<td><s:property value="map.get(#bookId).id"/></td>
<td><s:property value="map.get(#bookId).name"/></td>
</tr>
</s:iterator>
</table>
<br>
<table border="1">
<tr><td colspan="2">通过嵌套的Iterator标签遍历map中的value(value值是Book类型的对象)</td></tr>
<tr><td>ID</td><td>name</td></tr>
<s:iterator value="map.keySet()" id="bookId">
<s:iterator value="map.get(#bookId)" id="book">
<tr>
<td><s:property value="#book.id"/></td>
<td><s:property value="#book.name"/></td>
</tr>
</s:iterator>
</s:iterator>
</table>
<br>
<table border="1">
<tr><td colspan="2">在session中通过Key遍历map中的value(value值是Book类型的对象)</td></tr>
<tr><td>ID</td><td>name</td></tr>
<s:iterator value="#session.map.keySet()" id="bookId">
<tr>
<td><s:property value="#session.map.get(#bookId).id"/></td>
<td><s:property value="#session.map.get(#bookId).name"/></td>
</tr>
</s:iterator>
</table>
<br>
<table border="1">
<tr><td colspan="2">在session中通过嵌套的Iterator标签遍历map中的value(value值是Book类型的对象)</td></tr>
<tr><td>ID</td><td>name</td></tr>
<s:iterator value="#session.map.keySet()" id="bookId">
<s:iterator value="map.get(#bookId)" id="book">
<tr>
<td><s:property value="#book.id"/></td>
<td><s:property value="#book.name"/></td>
</tr>
</s:iterator>
</s:iterator>
</table>
</body>
</html>
OK,到此为止,测试成功!然后将其用在我的项目中
需求:
有一个list集合(保存的是广告位)传到jsp页面中,管理员可以销售广告位(选中广告位),选中之后要保存到Session里的Map对象中。当以后再进入jsp页面时就要遍历List和session中的Map,如果List集合中的广告位出现在Map中,就使其复选框呈选中状态!
action代码省略:
jsp代码如下:
<table width="100%" cellspacing="0" cellpadding="3" align="center" class="StyleBorderOnly" >
<tr>
<td align="center" class="StylePopped" width="5%">选择</td>
<td align="center" class="StylePopped">广告位名称</td>
<td align="center" class="StylePopped">所属终端组</td>
<td align="center" class="StylePopped">起始时间</td>
<td align="center" class="StylePopped">终止时间</td>
<td align="center" class="StylePopped">价格</td>
</tr>
<s:iterator value="listAdSpaces">
<tr height="20" bgcolor="#FFFFFF" onmouseover="this.bgColor='beige';" onmouseout="this.bgColor='#FFFFFF';">
<td align="center" class="TableColA">
<input type="checkbox" name="ids" value="<s:property value="id"/>"
<s:iterator value="#session.cart.cart.keySet()" id="id">
<s:iterator value="#session.cart.cart.get(#id)" id="space">
<s:if test="id==#space.id">
checked
</s:if>
</s:iterator>
</s:iterator>
/></td>
<td class="TableColA" align="center"><s:property value="spaceName"/></td>
<td class="TableColA" align="center"><s:property value="playList.terminalGroup.groupName"/></td>
<td class="TableColA" align="center"><s:date name="playList.startTime" format="hh:mm:ss"/></td>
<td class="TableColA" align="center"><s:date name="playList.endTime" format="hh:mm:ss"/></td>
<td class="TableColA" align="center"><s:property value="price"/></td>
</tr>
</s:iterator>
<tr>
<td colspan="2">
<input name="Submit3" type="submit" class="button1" value="确 定" onClick="selectAdSpace()">
<input name="Submit3" type="submit" class="button1" value="关 闭" onClick="window.close()">
</td>
</tr>
</table>
|
//--------------------向application里面放置值------------------------------------------------------
ActionContext context = ActionContext.getContext();
Map app = context.getApplication();
List allry = swryService.getAll();
List all = dmSwjgService.getAll();
//将所有的操作人员放到一个list里面,list里面保存着以人员代码和人员对象组成的map对象。
HashMap ryMap = new HashMap();
for(int i = 0;i<allry.size();i++){
DmSwry dmSwry1 = (DmSwry)allry.get(i);
ryMap.put(dmSwry1.getSwryDm(), dmSwry1.getSwryMc());
}
//将所有的机关信息放到一个list里面,list里面保存着以机关代码和机关对象组成的map对象。
HashMap jgMap = new HashMap();
for (int i = 0;i<all.size();i++){
DmSwjg dmSwjg1 = (DmSwjg)all.get(i);
jgMap.put(dmSwjg1.getSwjgDm(), dmSwjg1.getSwjgMc());
}
app.put("jgMap", jgMap);
app.put("ryMap", ryMap);
|