oralce查询多列数据库操作
来源:互联网 发布:局域网教学软件 编辑:程序博客网 时间:2024/06/05 05:11
在表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据。象sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式中引用要更新的表以外的其它数据。
例如:
UPDATE Table2
SET Table2.ColB = Table2.ColB + Table1.ColB
FROM Table2
INNER JOIN Table1
ON (Table2.ColA = Table1.ColA);
实际更新的操作是在要更新的表上进行的,而不是在from子句所形成的新的结果集上进行的。
Oracle没有update from语法,可以通过两种写法实现同样的功能:
1:子查询UPDATE A SET A.NAME=(SELECT B.NAME FROM B WHERE B.ID=A.ID),本查询要根据具体情况看看是否变通成如下
(1)单列
UPDATE A
SET A.NAME=(SELECT B.NAME FROM B WHERE B.ID=A.ID)
WHERE A.ID IN (SELECT ID FROM B);
(2)多列
UPDATE order_rollup
SET(qty,price)=(SELECT SUM(qty),SUM(price) FROM order_lines WHERE customer_id='KOHL' )
WHERE cust_id='KOHL' AND order_period=TO_DATE('01-Oct-2000')
2:利用视图来做
UPDATE (SELECT A.NAME ANAME,B.NAME BNAME FROM A,B WHERE A.ID=B.ID)
SET ANAME=BNAME;
例如:
UPDATE tablea a
SET a.fieldforupdate = (SELECT b.fieldsource FROM tableb b WHERE a.keyfield = b.keyfield)
WHERE EXISTS (SELECT b.fieldsource FROM tableb b WHERE a.keyfield = b.keyfield)
3 :查询语句
select * from tb_name where (col1,col2) in((1,1})(2,2));//直接使用多列值
select * from tb_name where (col1,col2) in (select max(col1),col2 from tb_name where col2<xxx group by col2) //使用子查询
4:子查询多列
select e.ename,e.sal,d.dname,temp.count,temp.avg from emp e,dept d,( select deptno dno,COUNT(empno) count,ROUND(AVG(sal),2) avg from emp group by deptno) temp where job='MANAGER' and e.deptno=d.deptno and e.deptno=temp.dno;
有三点需要注意:
- 对于一个给定的a.keyfield的值,SELECT b.fieldsource FROM tableb b WHERE a.keyfield = b.keyfield 的值只能是一个唯一值,不能是多值。
- 在绝大多数情况下,最后面的where EXISTS子句是重要的,否则将得到错误的结果。
- 对于视图更新的限制:
如果视图基于多个表的连接,那么用户更新(update)视图记录的能力将受到限制。除非update只涉及一个表且视图列中包含了被更新的表的整个主键,否则不能更新视图的基表。
- oralce查询多列数据库操作
- Python 操作Oralce数据库
- Oralce 数据库格式化某列数据
- 数据库表查询-对查询的列进行操作
- Oralce中查询列,但是提示列找不到的原因
- iBATIS查询ORALCE 数据库中Date数据类型
- SQL 数据库表 表结构 列 查询操作
- xutils3 数据库操作,根据指定的columns列查询数据
- oralce数据库的回滚操作原理
- Oralce操作
- 数据库列 操作
- Oralce创建数据库,以及登录数据库操作方式
- oralce 表空间常用操作(查询 删除 增加)
- 通过USER_SOURCE、DBA_SOURCE、ALL_SOURCE查询Oralce数据库对象DDL语句
- oralce 行转成列。
- Oralce视图案列
- SQL 操作列转行查询
- 关于ACCESS数据库多表查询结果列合并
- 远程连接Windows服务器 【由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。】mstsc /admin
- TCP->多进程服务器->多进程服务器->线程池
- cf The Festive Evening(水)
- LinkedList源码分析
- itext对水印图片的旋转、放大、缩小等操作的示例
- oralce查询多列数据库操作
- DOS下编译运行小应用程序
- Linux下Android Studio中的AVD模拟器启动无反应解决方法
- Java排序算法之简单选择排序
- redis和memcached的区别
- 关于C++ const 的全面总结
- iOS开发遇到memory持续上涨导致页面crash问题解决思路
- CCF认证201312第四题:有趣的数+动态规划专题
- 日常小结篇-hashMap,请求乱码