一个简单的SQL语句问题,在线等待~

金陵枫 2003-08-21 02:53:27
有表A和表B,表A有字段ID,SM,表B也有这两个字段,现在我想把A.ID=B.ID的B表的SM附给A 表,我写的语句如下:
update lxf_cs_tqpz set gjz=(select cs_tqpz.gjz from lxf_cs_tqpz,cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm)

系统提示:single-row subquery return more then one row

请问正确的语句要怎么写?
...全文
22 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
akinggom 2003-08-21
  • 打赏
  • 举报
回复
为什么不用procedure来完成呢?
非常简单,而且可扩展性也好哟!~~~
akinggom 2003-08-21
  • 打赏
  • 举报
回复
为什么不用procedure来完成呢?
非常简单,而且可扩展性也好哟!~~~
金陵枫 2003-08-21
  • 打赏
  • 举报
回复
刚才没看到你的留言,现在试了,成功了,多谢~
tiangou 2003-08-21
  • 打赏
  • 举报
回复
我刚才的方法你试过了么?在我机子上是可以的
我是特意建了这两个表来测试的
你不妨试试
金陵枫 2003-08-21
  • 打赏
  • 举报
回复
首先感谢各位的指点。
我试了一下,LGQDUCKY(飘) 的语句在系统中无法运行,我用的TOAD程序不认第一行中的cs_tqpz.gjz 方式;
用beckhambobo(beckham) 和cricketlj(蟋蟀) 的方法,则不能打到我原先想得到的结果,我想得到的结果是如果A.ID=B.ID,那么使得A.SM=B.SM,也就是说如果ID相同,那么我要让两个表的SM也相同.
请各位再帮忙想一下
tiangou 2003-08-21
  • 打赏
  • 举报
回复
以下语句在8i上运行通过
========================================================
SQL> select * from a;

ID SM
---------- ------------------------------
1 bad1
2 bad1
3 bad1

SQL> select * from b;

ID SM
---------- ------------------------------
1 good1
2 good2
3 good3

SQL> update a set a.sm = (select b.sm from b where a.id = b.id and rownum<=1);

3 rows updated

SQL> select * from a;

ID SM
---------- ------------------------------
1 good1
2 good2
3 good3

SQL> select * from b;

ID SM
---------- ------------------------------
1 good1
2 good2
3 good3

SQL>
cricketlj 2003-08-21
  • 打赏
  • 举报
回复
select cs_tqpz.gjz from lxf_cs_tqpz,cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm看看这个返回几条纪录,是否都一样,如果不一样,那就是你sql设计有问题了。如果一样,那就update lxf_cs_tqpz set gjz=(select max(gjz) from cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm)
或update lxf_cs_tqpz set gjz=(select min(gjz) from cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm)都可以!
beckhambobo 2003-08-21
  • 打赏
  • 举报
回复
update lxf_cs_tqpz set gjz=(select max(gjz) from cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm)
jiezhi 2003-08-21
  • 打赏
  • 举报
回复
select cs_tqpz.gjz from lxf_cs_tqpz,cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm返回多于一行了,遮造成了錯誤。
限定死你的條件。
LGQDUCKY 2003-08-21
  • 打赏
  • 举报
回复
update lxf_cs_tqpz set lxf_cs_tqpz.gjz=cs_tqpz.gjz
where lxf_cs_tqpz.gjz in
(select cs_tqpz.gjz from lxf_cs_tqpz,cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm)
LGQDUCKY 2003-08-21
  • 打赏
  • 举报
回复
字查寻返回多条记录。。。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧