解决方案 »
- 求教:Red Hat Enterprise Linux 5中oracle10g中autotrace的配置方法
- 采用ORACLE数据库系统SQL语言完成建表工作的题目,求高人解答
- OracleDeveloperSuite10g 无法安装到现有的Oracle9i 9.2.0.1.0或更高版本的Oracle目录中
- 大家推荐一本PL/SQL 入门的书
- 各位大哥,老大,兄长:请问 不同的数据库间 的触发器 插入更新删除 怎么写?
- 刚开始ORACLE,问2个基础问题
- sqlldr运行错误
- 数据库恢复问题
- 用OEM工具向数据库导入一个DMP文件时,显示authentic error,什么情况?
- 请问:如何修改Oracle的字符集,谢谢了?
- 表查询的两个问题。
- 请教数据库一致性问题
如果同一个(acct_id,user_id)下,有多条
old_bill_id=-1,new_billid!=-1且new_value!=xxx
的记录,则进行了多次累计,而第一条记录只进行一次累计……
2、第二个SQL,如果B表有重复数据,会导致查询数据量比较大
1,a
1,b
2,c
-----
select ID, value from t t1 where exists(
select 1 from t t2 where t1.id=t2.id
)
ID,value
1,a
1,b
2,c
-------------
select t1.ID, t1.value,t2.value from t t1, t t2 where t1.id=t2.id
)
ID,value1,value2
1,a,a
1,a,b
1,b,a
1,b,b
2,c,c
比如:
test_table
acct_id user_id old_billid new_billid old_value new_value
1 2 -1 -1 1 2
1 2 -1 -1 3 4
这样的数据,
用第一个SQL查询,应该是2条
用第二个SQL查询,那就应该是4条了因为表连接是取2个表的笛卡尔积再根据条件过滤的...
即第二个SQL查询的结果应该是
test_table a, test_table b
a.acct_id a.user_id a.old_value a.new_value b.old_value b.new_value
1 2 1 2 1 2
1 2 1 2 3 4
1 2 3 4 1 2
1 2 3 4 3 4
这样解释不知道清楚不清楚...我感觉你这个SQL不需要做表关联啊,只需要
select count(*) from test_table a
where a.new_billid=-1 and a.old_billid!=-1
and a.new_value <> a.old_value;
不就行了么?