(select * from exp_dict where exp_indicator = '2')这个只能返回一个字段
解决方案 »
- linux下使用sqlldr导入数据该如何操作???谢谢鸟
- orcle CONTAINS
- oracle数据库中的数据导出到edb数据库!求解决方案!
- java insert oracle后中文出现乱码问题
- 关于存储过程中的一个循环操作的问题
- 用 imp 把nvh_struct.dmp导入数据库后,怎样查看是否导入成功??
- 有关Oracle连接串的基础问题,请教各位!
- 小弟想学orcale 9i了,说大哥,大姐推举起这方面的好书?
- 请教写一个金额大小写转换的函数
- 给高分!在线紧急求救!
- 安装Oracle失败,提示需要注册wfnvg.ocx控件!如何解决
- oracle92换oracle10g系统速度变慢
delete from price_list where item_code exists (select 字段 from exp_dict where exp_indicator = '2')
如果price_list表的数据量小,而exp_dict的数据量大时,建议你用exists。
exists不是这么写吧?
应该是
delete from price_list where exists (select 1 from exp_dict where exp_dict.exp_indicator = '2' and exp_dict.item_code = price_list.item_code)
呵呵...谢谢你更正,我copy楼上的没看仔细
而item_code 和返回的结果不对应,所以不正确,执行就不通过了。
要改成 delete from price_list where item_code in (select colname from exp_dict where exp_indicator = '2')
不然你的exp_dict 有多列时,会报错。
2,*不对,只能是某一个和查询谓词对于的字段
其中select * from exp_dict where exp_indicator = '2' 返回的是一个结果集,不是字段,应该把*改成item_code字段名。
而你想要的是item_code字段。
很明显两者结果对应不上。
可以改成:delete from price_list where item_code in (select item_code from exp_dict where exp_indicator = '2')
不过为了执行效率,建议使用exists