oracle update tablename set column1=value1 where exists(。。)怎么用
1个回答
展开全部
oracle update tablename set column1=value1 where exists(。。)
该问题我猜楼主应该想问两个地方,
第一 exists怎么用,
exists在此处就是一个条件, exists中可以放子查询,它的返回结果只有两种,成立(存在)不成立(不存在),既不管你返回多少条结果(返回一条和返回一万条意义是一样的),该条件都成立,但如果没有查到数据该条件就不成立,
如: oracle update tablename set column1=value1 where exists(select 1 from other_table where other_column = value1),
这个语句的意思是,当other_table的other_column字段的值等于value1时,前面一段tablename表的修改才会执行.
PS: 这里面的exists中的子查询,我写了1,你可以写* 或具体的字段名, 在这个子查询里面只关心有没有返回结果集,而不关系具体的字段值, 所以写1而不写*是为了效率着想.因为写*的话,会把整个表的所有字段扫描出来
第二,value1后面怎么接,
value1在此处只能是唯一的值,不管你接什么子查询还是别的,只要你能保证返回的值唯一就行,
如楼主还有不懂的地方直接HI我
该问题我猜楼主应该想问两个地方,
第一 exists怎么用,
exists在此处就是一个条件, exists中可以放子查询,它的返回结果只有两种,成立(存在)不成立(不存在),既不管你返回多少条结果(返回一条和返回一万条意义是一样的),该条件都成立,但如果没有查到数据该条件就不成立,
如: oracle update tablename set column1=value1 where exists(select 1 from other_table where other_column = value1),
这个语句的意思是,当other_table的other_column字段的值等于value1时,前面一段tablename表的修改才会执行.
PS: 这里面的exists中的子查询,我写了1,你可以写* 或具体的字段名, 在这个子查询里面只关心有没有返回结果集,而不关系具体的字段值, 所以写1而不写*是为了效率着想.因为写*的话,会把整个表的所有字段扫描出来
第二,value1后面怎么接,
value1在此处只能是唯一的值,不管你接什么子查询还是别的,只要你能保证返回的值唯一就行,
如楼主还有不懂的地方直接HI我
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询