数码资讯
在Oracle数据库中同时更新两个表的简单方法
我以前只写一些简单的updaet报表,如更新设置表C1 = 'xxx ',等等 今天遇到一个数据校正问题。该项目的背景如下。有一个表A。有两个字段A1、A2和一个关联表B。还有两个字段,B1和B2。A2和B2相关联,希望将字段A1更新为B中的B1。 在理论上,SQL应该写得很好,但据报道半天ORAL
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
我以前只写一些简单的updaet报表,如更新设置表C1 = 'xxx ',等等
今天遇到一个数据校正问题。该项目的背景如下。有一个表A。有两个字段A1、A2和一个关联表B。还有两个字段,B1和B2。A2和B2相关联,希望将字段A1更新为B中的B1。
在理论上,SQL应该写得很好,但据报道半天ORALCE语法错误。还有一些小细节没有注意到。
第一次测试数据
表1,zz_test1
表2,zz_test2
要更新的表1文字表两text1值,相应的SQL如下:
更新zz_test1 T1 T1。文本=(
选择T2。正文从zz_test2 T2,T2。PID= t1。id
)
在存在
(
选择1 zz_test2 T2,T2。PID= t1。id
)
以下条件仅代表一个限制,它只更新符合条件的数据,也可以编写。
更新zz_test1 T1 T1。文本=(
选择T2。正文从zz_test2 T2,T2。PID= t1。id
)
在T1。身份在(选择PID从zz_test2)
此外,还有一种合并编写方法,相应的sql如下所示:
合并使用zz_test2 zz_test1 T1 T2(T1。id= T2。PID
当匹配时
更新集t1。文本= T2。,
为了避免与t1中的数据相对应的T2中的多个数据,可以将SQL更改为以下方式:
合并成zz_test1 T1的使用
(
SELECT * FROM zz_test2 X,X = rowid
(选择最大(y.rowid)从zz_test2 y在x = y身份证身份证)
)
T2
在(t1)。id= T2。PID
当匹配时
更新集t1。文本= T2。,
还有一个来自语法的更新,它不适合在Oracle和MySQL中进行测试。
作为总结,需要将项目更新为一个表的字段到另一个表中的某个字段。您可以使用更新语法并进行限制。使用合并的语法,还有一个合并语法,而从Oracle和MySQL中不能使用更新。
今天遇到一个数据校正问题。该项目的背景如下。有一个表A。有两个字段A1、A2和一个关联表B。还有两个字段,B1和B2。A2和B2相关联,希望将字段A1更新为B中的B1。
在理论上,SQL应该写得很好,但据报道半天ORALCE语法错误。还有一些小细节没有注意到。
第一次测试数据
表1,zz_test1
表2,zz_test2
要更新的表1文字表两text1值,相应的SQL如下:
更新zz_test1 T1 T1。文本=(
选择T2。正文从zz_test2 T2,T2。PID= t1。id
)
在存在
(
选择1 zz_test2 T2,T2。PID= t1。id
)
以下条件仅代表一个限制,它只更新符合条件的数据,也可以编写。
更新zz_test1 T1 T1。文本=(
选择T2。正文从zz_test2 T2,T2。PID= t1。id
)
在T1。身份在(选择PID从zz_test2)
此外,还有一种合并编写方法,相应的sql如下所示:
合并使用zz_test2 zz_test1 T1 T2(T1。id= T2。PID
当匹配时
更新集t1。文本= T2。,
为了避免与t1中的数据相对应的T2中的多个数据,可以将SQL更改为以下方式:
合并成zz_test1 T1的使用
(
SELECT * FROM zz_test2 X,X = rowid
(选择最大(y.rowid)从zz_test2 y在x = y身份证身份证)
)
T2
在(t1)。id= T2。PID
当匹配时
更新集t1。文本= T2。,
还有一个来自语法的更新,它不适合在Oracle和MySQL中进行测试。
作为总结,需要将项目更新为一个表的字段到另一个表中的某个字段。您可以使用更新语法并进行限制。使用合并的语法,还有一个合并语法,而从Oracle和MySQL中不能使用更新。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。