新手请教如何写一个oracle双重循环sql(50分)

老孙来也 2008-10-17 03:16:07
有两张表:
表a:
name(全名),no
表b:
name

其中 b表中的name 可能等于或者like a表中的name。

现在想把b.name全变换成对应的a.no。
应该如何编程呢??

看似简单,已经花了我半天时间了,头都昏了。

哪位大虾援手,必给50分!!
...全文
411 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
oracledbalgtu 2008-10-17
  • 打赏
  • 举报
回复
 
UPDATE B
SET B.NAME = (SELECT A.NO
FROM A
WHERE INSTR(B.NAME, A.NAME) > 0
AND ROWNUM = 1)
WHERE EXISTS (SELECT A.NO
FROM A
WHERE INSTR(B.NAME, A.NAME) > 0
AND ROWNUM = 1);
[Quote=引用楼主 sun_in_china 的帖子:]
有两张表:
表a:
name(全名),no
表b:
name

其中 b表中的name 可能等于或者like a表中的name。

现在想把b.name全变换成对应的a.no。
应该如何编程呢??

看似简单,已经花了我半天时间了,头都昏了。

哪位大虾援手,必给50分!!
[/Quote]
sjq521521 2008-10-17
  • 打赏
  • 举报
回复
顶下4楼
老孙来也 2008-10-17
  • 打赏
  • 举报
回复
先谢谢楼上的朋友。


我这里学习学习。(#-#)
mantisXF 2008-10-17
  • 打赏
  • 举报
回复
这个只是1对1的情况,如果1对多的情况就会有问题。这个信息还是要LZ来提供。[Quote=引用 7 楼 cosio 的回复:]
引用楼主 sun_in_china 的帖子:
有两张表:
表a:
name(全名),no
表b:
name

其中 b表中的name 可能等于或者like a表中的name。

现在想把b.name全变换成对应的a.no。
应该如何编程呢??

看似简单,已经花了我半天时间了,头都昏了。

哪位大虾援手,必给50分!!



SQL code

select id,name from d
1 张三
2 李四
3 王五

select name from e


王五



--s…
[/Quote]
cosio 2008-10-17
  • 打赏
  • 举报
回复
instr(d.name,e.name)>0 or instr(e.name,d.name)>0

少了一个条件!
cosio 2008-10-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 sun_in_china 的帖子:]
有两张表:
表a:
name(全名),no
表b:
name

其中 b表中的name 可能等于或者like a表中的name。

现在想把b.name全变换成对应的a.no。
应该如何编程呢??

看似简单,已经花了我半天时间了,头都昏了。

哪位大虾援手,必给50分!!
[/Quote]



select id,name from d
1 张三
2 李四
3 王五

select name from e


王五



--sql:
select id,b,a
from
(select id,d.name b,e.name a,
(case when instr(d.name,e.name)>0 then id end ) nn
from d,e
)
where nn is not null

--result:
2 李四 李
1 张三 张
3 王五 王五
1 张三 三
2 李四 四




yuyu1980 2008-10-17
  • 打赏
  • 举报
回复
难啊
假如B中的NAME在A中有两个LIKE的记录取哪一个?是不是随便放一个 
要是的这样的话
update b set b.name=
(select a.no from a where b.name like a.name||'%' and rownum=1);
kukuxiaolang 2008-10-17
  • 打赏
  • 举报
回复
看你是有值就可以还是咋的了`````
范佩西_11 2008-10-17
  • 打赏
  • 举报
回复
这个是b.name包含或等于a.name
update b set b.name =(select a.no from a where instr(b.name,a.name)>0 );


如果是a.name包含或等于b.name
update b set b.name =(select a.no from a where instr(a.name,b.name)>0 );

如果是互相包含的可能
update b set b.name= (select a.no from a where instr(a.name,b.name)>0 or instr(b.name,a.name)>0) 
hyrongg 2008-10-17
  • 打赏
  • 举报
回复
晕哟,要是b的一个字段同时like A里面的两个,B里面怎么Update?

比如
A

'abcd',1
'bbcd',2


B
'bcd'


B Update成1还是2?


vc555 2008-10-17
  • 打赏
  • 举报
回复
关联条件是什么?
你举个例子,列出表中数据和你想要的查询结果。
wfqqwer5213 2008-10-17
  • 打赏
  • 举报
回复
update b set b.name=a.no where b.name like a.name and rownum=1;
内容概要:SSD2828QN4是一款MIPI主桥接芯片,用于连接应用处理器与传统并行LCD接口及支持MIPI从属接口的LCD驱动器。该芯片支持最高每通道1Gbps的串行链路速度,最多可配置4个数据通道,显著减少了信号数量。它支持多种接口模式,包括RGB+SPI组合接口,适用于驱动智能或非智能显示面板,并能通过命令模式和视频模式传输数据。芯片内置时钟和复位模块、外部接口、协议控制单元(PCU)、包处理单元(PPU)、错误校正码/循环冗余校验(ECC/CRC)模块、长包和命令缓冲区、D-PHY控制器、模拟收发器以及内部锁相环(PLL),确保了高效的数据传输和系统稳定性。此外,文档详细描述了芯片的引脚配、寄存器设置、操作模式、电源序列、时序特性等关键参数,为开发者提供了全面的技术指导。 适合人群:具备一定硬件设计基础,从事嵌入式系统开发、显示技术研究的研发人员。 使用场景及目标:①实现应用处理器与MIPI兼容显示屏之间的高速数据传输;②优化显示系统的功耗表现,减少电磁干扰(EMI);③通过灵活配置不同接口模式来适应各种显示设备的需求。 阅读建议:此文档面向具有一定电子工程背景的专业人士,建议读者结合实际项目需求深入理解各章节内容,特别是关于寄存器配置、时序要求等方面的具体说明。对于初次接触此类技术的开发者而言,建议先熟悉基本概念再逐步掌握高级功能的应用方法。

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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