sql 语法,取一个表中的值更新另一个表

来源:百度知道 编辑:UC知道 时间:2024/06/17 13:51:06
如:
A表:id lanmu_ID lanmu_CODE title
B表:id CODE title
A表是内容,B表是栏目分类,
B表通过code进行排序,
形式如:
1 0001 新闻文章
2 00010001 时事新闻
3 00010002 国内新闻
4 0002 技术文章
5 00020001 asp技术
6 00020002 php技术
7 0003 下载
8 00030001 软件下载
9 00030002 电影下载
而A表内存的就是对应的文章,B表的code还有调整顺序的功能,所以当我调整0001和0002的顺序时,对应的子栏目的code也会对应的变化,这一点比较容易,难的就是对应的栏目code改变后,如果更新A表内容的father_CODE,因为一次性可能有多个栏目code被改变,所以我想到用链接表的方法,更新所有改变过的code栏目的文章,不知道,链接表应该怎么写。
如我把0002删除后,其下的子栏目和文章都被删除了,这时0003及其下的子栏目都会变成这样
1 0001 新闻文章
2 00010001 时事新闻
3 00010002 国内新闻
7 0002 下载
8 00020001 软件下载
9 00020002 电影下载
这时怎么才能用一个sql语句把对应的“下载”、软件下载,电影下载在A表中的内容的fatherCODE变成对应的呢,怎么更新

A表的lanmu_code实际是个冗余字段。通过A表.lanmu_id =B表.id做关联就能完成此功能。
Oracle:
update (
select A表.lanmu_code code1,B表.code code2
from A表,B表
where A表.lanmu_id =B表.id
)
set code1 = code2 ;

SqlServer:
update A表
set t1.lanmu_code = t2.code
from A表 t1,B表 t2
where t1.lanmu_id = t2.id