免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8742 | 回复: 8
打印 上一主题 下一主题

请教下:两个表有一个同样的字段,通过一个表修改另外一个表的数据,这个sql怎么写 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-08 08:53 |只看该作者 |倒序浏览
如题

论坛徽章:
0
2 [报告]
发表于 2008-01-08 09:14 |只看该作者
自己顶一个先

论坛徽章:
0
3 [报告]
发表于 2008-01-08 11:07 |只看该作者
参考下例
db2 update staff11 set name=(select name from staff where staff11.id=staff.id)

论坛徽章:
0
4 [报告]
发表于 2008-01-11 11:02 |只看该作者
谢谢,上面这个写法不行:wink:

论坛徽章:
0
5 [报告]
发表于 2008-01-11 12:05 |只看该作者
应该描述更详细些

论坛徽章:
0
6 [报告]
发表于 2008-01-14 03:18 |只看该作者
原帖由 pallam 于 2008-1-11 11:02 发表
谢谢,上面这个写法不行:wink:



这个写法可以,但子查询至多只能返回一笔数据!

还是要看您的应用!

论坛徽章:
0
7 [报告]
发表于 2008-01-14 09:49 |只看该作者
晕~~ 比较简单的问题 都说是参考
D:\>db2level
DB21085I  实例 "DB2" 使用 "32" 位和 DB2 代码发行版 "SQL08028",级别标识为
"03090106"。
参考标记为 "DB2 v8.1.15.254"、"s070720" 和 "WR21383",修订包为 "15"。
产品是在 "C:\PROGRA~1\IBM\SQLLIB" 处安装的。

D:\>db2 update staff11 set name='11'
DB20000I  SQL 命令成功完成。
D:\>db2 select * from staff11

ID     NAME      DEPT   JOB   YEARS  SALARY    COMM      TEST
------ --------- ------ ----- ------ --------- --------- -----------
    10 11            20 Mgr        7  18357.50         -      123456
    20 11            20 Sales      8  18171.25    612.45      123456
    30 11            38 Mgr        5  17506.75         -      123456
    40 11            38 Sales      6  18006.00    846.55      123456
    50 11            15 Mgr       10  20659.80         -      123456
    60 11            38 Sales      -  16808.30    650.25      123456
    70 11            15 Sales      7  16502.83   1152.00      123456
    80 11            20 Clerk      -  13504.60    128.20      123456
    90 11            42 Sales      6  18001.75   1386.70      123456
   100 11            42 Mgr        7  18352.80         -      123456
   110 11            15 Clerk      5  12508.20    206.60      123456
   120 11            38 Clerk      -  12954.75    180.00      123456
   130 11            42 Clerk      6  10505.90     75.60      123456
   140 11            51 Mgr        6  21150.00         -      123456
   150 11            51 Sales      6  19456.50    637.65      123456
   160 11            10 Mgr        7  22959.20         -      123456
   170 11            15 Clerk      4  12258.50    110.10      123456
   180 11            38 Clerk      3  12009.75    236.50      123456
   190 11            20 Clerk      8  14252.75    126.50      123456
   200 11            42 Clerk      -  11508.60     84.20      123456
   210 11            10 Mgr       10  20010.00         -      123456
   220 11            51 Sales      7  17654.50    992.80      123456
   230 11            51 Clerk      3  13369.80    189.65      123456
   240 11            10 Mgr        5  19260.25         -      123456
   250 11            51 Clerk      6  14460.00    513.30      123456
   260 11            10 Mgr       12  21234.00         -      123456
   270 11            66 Mgr        9  18555.50         -      123456
   280 11            66 Sales      9  18674.50    811.50      123456
   290 11            84 Mgr       10  19818.00         -      123456
   300 11            84 Sales      5  15454.50    806.10      123456
   310 11            66 Sales     13  21000.00    200.30      123456
   320 11            66 Sales      4  16858.20    844.00      123456
   330 11            66 Clerk      1  10988.00     55.50      123456
   340 11            84 Sales      7  17844.00   1285.00      123456
   350 11            84 Clerk      5  13030.50    188.00      123456
   455 11             - -          -         -         -      123456

  36 条记录已选择。
  
D:\>db2 update staff11 set name=(select name from staff where staff11.id=staff.i
d)
DB20000I  SQL 命令成功完成。

D:\>db2 select * from staff11

ID     NAME      DEPT   JOB   YEARS  SALARY    COMM      TEST
------ --------- ------ ----- ------ --------- --------- -----------
    10 test1         20 Mgr        7  18357.50         -      123456
    20 Pernal        20 Sales      8  18171.25    612.45      123456
    30 Marenghi      38 Mgr        5  17506.75         -      123456
    40 O'Brien       38 Sales      6  18006.00    846.55      123456
    50 Hanes         15 Mgr       10  20659.80         -      123456
    60 Quigley       38 Sales      -  16808.30    650.25      123456
    70 Rothman       15 Sales      7  16502.83   1152.00      123456
    80 James         20 Clerk      -  13504.60    128.20      123456
    90 Koonitz       42 Sales      6  18001.75   1386.70      123456
   100 Plotz         42 Mgr        7  18352.80         -      123456
   110 Ngan          15 Clerk      5  12508.20    206.60      123456
   120 Naughton      38 Clerk      -  12954.75    180.00      123456
   130 Yamaguchi     42 Clerk      6  10505.90     75.60      123456
   140 Fraye         51 Mgr        6  21150.00         -      123456
   150 Williams      51 Sales      6  19456.50    637.65      123456
   160 Molinare      10 Mgr        7  22959.20         -      123456
   170 Kermisch      15 Clerk      4  12258.50    110.10      123456
   180 Abrahams      38 Clerk      3  12009.75    236.50      123456
   190 Sneider       20 Clerk      8  14252.75    126.50      123456
   200 Scoutten      42 Clerk      -  11508.60     84.20      123456
   210 Lu            10 Mgr       10  20010.00         -      123456
   220 Smith         51 Sales      7  17654.50    992.80      123456
   230 Lundquist     51 Clerk      3  13369.80    189.65      123456
   240 Daniels       10 Mgr        5  19260.25         -      123456
   250 Wheeler       51 Clerk      6  14460.00    513.30      123456
   260 Jones         10 Mgr       12  21234.00         -      123456
   270 Lea           66 Mgr        9  18555.50         -      123456
   280 Wilson        66 Sales      9  18674.50    811.50      123456
   290 Quill         84 Mgr       10  19818.00         -      123456
   300 Davis         84 Sales      5  15454.50    806.10      123456
   310 Graham        66 Sales     13  21000.00    200.30      123456
   320 Gonzales      66 Sales      4  16858.20    844.00      123456
   330 Burke         66 Clerk      1  10988.00     55.50      123456
   340 Edwards       84 Sales      7  17844.00   1285.00      123456
   350 Gafney        84 Clerk      5  13030.50    188.00      123456
   455 test           - -          -         -         -      123456

  36 条记录已选择。

D:\>db2 update staff11 set name='11'
DB20000I  SQL 命令成功完成。

D:\>db2 update staff11 set name=(select name from staff where staff11.id=staff.i
d) where exists (select * from staff where staff11.id=staff.id)
DB20000I  SQL 命令成功完成。

D:\>db2 select * from staff11

ID     NAME      DEPT   JOB   YEARS  SALARY    COMM      TEST
------ --------- ------ ----- ------ --------- --------- -----------
    10 test1         20 Mgr        7  18357.50         -      123456
    20 Pernal        20 Sales      8  18171.25    612.45      123456
    30 Marenghi      38 Mgr        5  17506.75         -      123456
    40 O'Brien       38 Sales      6  18006.00    846.55      123456
    50 Hanes         15 Mgr       10  20659.80         -      123456
    60 Quigley       38 Sales      -  16808.30    650.25      123456
    70 Rothman       15 Sales      7  16502.83   1152.00      123456
    80 James         20 Clerk      -  13504.60    128.20      123456
    90 Koonitz       42 Sales      6  18001.75   1386.70      123456
   100 Plotz         42 Mgr        7  18352.80         -      123456
   110 Ngan          15 Clerk      5  12508.20    206.60      123456
   120 Naughton      38 Clerk      -  12954.75    180.00      123456
   130 Yamaguchi     42 Clerk      6  10505.90     75.60      123456
   140 Fraye         51 Mgr        6  21150.00         -      123456
   150 Williams      51 Sales      6  19456.50    637.65      123456
   160 Molinare      10 Mgr        7  22959.20         -      123456
   170 Kermisch      15 Clerk      4  12258.50    110.10      123456
   180 Abrahams      38 Clerk      3  12009.75    236.50      123456
   190 Sneider       20 Clerk      8  14252.75    126.50      123456
   200 Scoutten      42 Clerk      -  11508.60     84.20      123456
   210 Lu            10 Mgr       10  20010.00         -      123456
   220 Smith         51 Sales      7  17654.50    992.80      123456
   230 Lundquist     51 Clerk      3  13369.80    189.65      123456
   240 Daniels       10 Mgr        5  19260.25         -      123456
   250 Wheeler       51 Clerk      6  14460.00    513.30      123456
   260 Jones         10 Mgr       12  21234.00         -      123456
   270 Lea           66 Mgr        9  18555.50         -      123456
   280 Wilson        66 Sales      9  18674.50    811.50      123456
   290 Quill         84 Mgr       10  19818.00         -      123456
   300 Davis         84 Sales      5  15454.50    806.10      123456
   310 Graham        66 Sales     13  21000.00    200.30      123456
   320 Gonzales      66 Sales      4  16858.20    844.00      123456
   330 Burke         66 Clerk      1  10988.00     55.50      123456
   340 Edwards       84 Sales      7  17844.00   1285.00      123456
   350 Gafney        84 Clerk      5  13030.50    188.00      123456
   455 test           - -          -         -         -      123456

  36 条记录已选择。

论坛徽章:
0
8 [报告]
发表于 2008-01-18 11:10 |只看该作者
db2 update staff11 set name=(select name from staff where staff11.id=staff.id)中的子查询每次返回的结果不能超过1行。

论坛徽章:
0
9 [报告]
发表于 2008-01-18 11:39 |只看该作者
抬头稍微看看楼上 这东西有什么好讨论的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP