7月2

sql 多表关联更新方法

21:11数据库  From: 本站原创
#表结构:
1、表一:Test1
Id  name  age
1      
2      

2、表二:Test2
Id  name  age
1  小明  10
2  小红  8


#实现将表Test2的name和age字段数据更新到表Test1中,按照id相等的条件

1、SQLServer多表更新方法:
语法:

UPDATE { table_name WITH ( < table_hint_limited > [ ...n ] ) &#124; view_name &#124; rowset_function_limited }
SET { column_name = { expression &#124; DEFAULT &#124; NULL } &#124; @variable = expression &#124; @variable = column = expression } [ ,...n ]
{ { [ FROM { < table_source > } [ ,...n ] ] [ WHERE < search_condition > ] } &#124; [ WHERE CURRENT OF { { [ GLOBAL ] cursor_name } &#124; cursor_variable_name } ] } [ OPTION ( < query_hint > [ ,...n ] ) ]
例子:

update test1
set test1.name=test2.name,test1.age=test2.age
from test1
inner join test2
on test1.id=test2.id

2、Oracle 多表更新方法:
语法:

UPDATE updatedtable
SET (col_name1[,col_name2...])= (SELECT col_name1,[,col_name2...]
FROM srctable [WHERE where_definition])
例子:

update test1
set (test1.name,test1.age)=
(select test2.name,test2.age from test2 where test2.id=test1.id)

3、MySql多表更新方法:
语法:

UPDATE table_references
SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]
例子:

update test1,test2
set test1.name=test2.name,test1.age=test2.age
where test1.id=test2.id

4、通用方法:(*^__^*)
update test1
set name=(select name from test2 where test2.id=test1.id),
age=(select age from test2 where test2.id=test1.id)
7月2
最近有个项目线上运行的时候客户说你们是不是限制了1M的,我说没有啊,原来发现是nginx报的。
从字面上看,说的是请求的实体太大的问题,那么可以联想到是HTTP请求中的Body大小被限制了的原因。

Nginx中的【client_max_body_size】配置属性

通过查资料,发现是Nginx配置中限制了请求的实体大小,因此就可以通过修改Nginx的配置文件来解决这个问题。Nginx的默认配置文件是conf目录下的nginx.conf文件,如果有自行扩展的配置文件可以在nginx.conf文件中查找include关键字去定位到相应的扩展配置文件。

具体的话是有一个【client_max_body_size】属性,这个属性可以配置在http节点下(http全局),可以配置在server节点下(server全局),也可以配置在location节点下(单应用)。要注意的是,这个属性在不配置的情况下默认值是1m,也就是限制了请求实体的大小为1m。

http节点下:

http {
    # 将Nginx代理的所有请求实体的大小限制为20m
    client_max_body_size 20m;
}
server节点下:

server {
    # 将该服务下的所有请求实体的大小限制为20m
    client_max_body_size 20m;
}
location节点下:

location /yanggb {
    # 将此路由请求的实体大小限制为20m
    client_max_body_size 20m;
}
保存之后要记得重启Nginx使修改后的配置生效。

service nginx restart
Tomcat的【maxPostSize】配置属性

另外的,Tomcat下的conf文件夹中的server.xml文件中也有属性配置【maxPostSize】可以限制post请求参数的大小。


<Connector port="8080" protocol="HTTP/1.1"  
    connectionTimeout="2000"  
    redirectPort="8443"  
    URIEncoding="UTF-8"  
    maxThreads="3000"  
    compression="on" compressableMimeType="text/html,text/xml"  
    maxPostSize="256"/>  
<Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />

要注意的是,在Tomcat7.0.63之前,maxPostSize属性设置为0和负数都可以代表不限制,但是之后的Tomcat版本只能将maxPostSize属性设置为负数才能代表不限制。
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]