免费注册 查看新帖 |

Chinaunix

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

江湖求急。谢谢各位大侠们!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-13 00:32 |只看该作者 |倒序浏览
TEMP_1
A1   A2   A3   
--   --   --   
1              
2              
3              
4              
5              
6              

TEMP_2
A1   A2   A3   
--   --   --   
1    1         
1    2         
2    2         
3    1         
3    2         
4    3  

想用2里的A2列最小值更新到1里的A2列值。即想要1变成如下表
A1   A2   A3   
--   --   --   
1    1        
2    2         
3    1         
4    3         
5              
6              

请问这样的语句怎么写?

论坛徽章:
0
2 [报告]
发表于 2009-05-13 00:39 |只看该作者
麻烦各位大侠给支个招。在下十在是想不出来怎么弄了。最好是不要通过临时表来操作!!

谢谢!!!!!!!

论坛徽章:
0
3 [报告]
发表于 2009-05-13 11:35 |只看该作者
update t1 set t1.a2=min(t2.a2)
from t2
where t1.a1=t2.a1

论坛徽章:
0
4 [报告]
发表于 2009-05-15 17:51 |只看该作者
update t1 set t1.a2=min(t2.a2)
from t2
where t1.a1=t2.a1

不行啊。这样更新的结果全都是1了。

论坛徽章:
2
2015年亚洲杯之巴勒斯坦
日期:2015-02-15 12:11:292015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2009-05-17 02:19 |只看该作者
select min(A2) as A2_min,A1 into #TEMP_03 from TEMP_02 group by A1;
update table TEMP_01  tb1
set tb1.A2=tb2.A2_min
from #TEMP_03  tb2
where tb2.A1=tb1.A1 ;

论坛徽章:
0
6 [报告]
发表于 2009-05-17 12:09 |只看该作者
谢谢.用过渡表是可以,现在就是想用一句话更新过来.

论坛徽章:
2
2015年亚洲杯之巴勒斯坦
日期:2015-02-15 12:11:292015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2009-05-17 16:55 |只看该作者
select a.A1,b.A2,a.A3 from TEMP_01 a left join (select A1,min(A2) as A2 from  TEMP_02 group by A1 ) b on a.A1=b.A1;


这个应该能解决最终你的问题!

论坛徽章:
2
2015年亚洲杯之巴勒斯坦
日期:2015-02-15 12:11:292015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2009-05-17 19:01 |只看该作者
也可以这样:

update TEMP_01 a,(select A1,min(A2) as A2 from  TEMP_02 group by A1) b
set a.A2=b.A2 where a.A1=b.A1;

论坛徽章:
0
9 [报告]
发表于 2009-06-10 01:09 |只看该作者
谢谢各位老大回贴。上面的语句在我的数据库里执行不了。
select a.A1,b.A2,a.A3 from TEMP_1 a left join (select A1,min(A2) as A2 from  TEMP_2 group by A1 ) b on a.A1=b.A1 执行这句话提示如下:
Incorrect syntax near the keyword 'select'.
Server Message:  Number  102, Severity  15
Server 'SYBASE', Line 1:
Incorrect syntax near ')'.


update TEMP_01 a,(select A1,min(A2) as A2 from  TEMP_02 group by A1) b set a.A2=b.A2 where a.A1=b.A1 执行这句提示如下:
Incorrect syntax near 'b'.
Server Message:  Number  102, Severity  15
Server 'SYBASE', Line 1:
Incorrect syntax near '='.

么办法了。我只能是通过过渡表来实现了。

再次感谢各位。谢谢。

论坛徽章:
2
2015年亚洲杯之巴勒斯坦
日期:2015-02-15 12:11:292015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2009-06-10 23:17 |只看该作者
原帖由 arq 于 2009/6/10 01:09 发表
谢谢各位老大回贴。上面的语句在我的数据库里执行不了。
select a.A1,b.A2,a.A3 from TEMP_1 a left join (select A1,min(A2) as A2 from  TEMP_2 group by A1 ) b on a.A1=b.A1 执行这句话提示如下:
Incor ...


将第二条SQL即update语句换成如下:
update TEMP_01 a set a.A2=b.A2
from (select A1,min(A2) as A2 from  TEMP_02 group by A1) as b
where a.A1=b.A1;

再尝试一下,如果不行就能是数据库版本不支持这种语法了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP