当前位置: 首页 > 知识库问答 >
问题:

Oracle 10g-插入到临时表-选择和插入之间的记录计数不匹配

汪玮
2023-03-14

我们正在尝试将select查询中的记录插入临时表,临时表中缺少一些记录。select语句有多个连接和联合,所有这些都有点复杂。简单地说,该脚本包含两部分:第一部分插入临时表,第二部分选择查询,包含多个联接、内联子查询、联合和按类和条件分组

例如。如果我们单独执行select语句,它会返回一些计数,例如=

此外,我们还有其他一些观察结果。它只发生在第二次执行中,而不是第一次运行。希望可能存在一些缓存问题

我们有一个解决方案,一旦我们清除会话缓存(检查点,刷新shared_pool和buffer_cache),它可以很好地Re_Run。

该代码看起来像sql=“插入以从xxx、abc、pqr..where..中选择x、y、z..”;(逻辑但非实数非常复杂,大约700行包含多个连接、内联子查询、分组依据等)stmt=conn.createStatement();rCount=stmt。执行更新(sql);实际问题是rCount=xxxx=Count(可诱惑)

任何人都可以解释吗?

提前感谢您的努力和帮助。

湿婆。

共有2个答案

江睿
2023-03-14

我们得到了一个解决方案,一旦我们清除了会话缓存(检查点、刷新共享池和缓冲缓存),它就可以很好地重新运行。但是,我们不知道这个解决方案是否正确?以及清除缓存如何在后台工作以及插入失败。如果是真的,我猜配置设置有问题。

任何人都可以解释吗?

穆鸿卓
2023-03-14

依我的拙见,连接应该是完全外部连接,这样两个表的记录都会出现在结果中,尽管它们不匹配。请检查:http://en.wikipedia.org/wiki/Join_(SQL)#Full_outer_join

 类似资料:
  • 在创建了临时表并声明了数据类型之后; 然后如何插入数据库中物理表中已保存的相关数据?

  • 问题内容: 这似乎很简单,但我坚持使用简单的insert语句。请参见以下内容: 在临时表行中,实际列表是从其他位置动态拉出的(这是出于演示目的)。我收到以下错误消息: 错误代码:1054。“字段列表”中的未知列“ insert_table.resource_id” 现在,我可以在整个temp表上运行一次select,它返回正常值,只是在update语句中失败。我正在MySQL工作台上运行它。完全不

  • 就像有人说的第二种方式更慢,但我不确定,那么哪种方式更好呢?不能使数据库崩溃。

  • 问题内容: 我正在尝试将Envers集成到我的项目中。我正在使用Hibernate-envers 3.5.5-Final,Hibernate-core 3.5.5-Final,spring 3.0.7.RELEASE。 对于DAO层,我使用的是GenericDaoHibernate类。 我的applicationContext.xml包含: 创建带注释的类的审核表,但是通过在实体表中添加或更新一行

  • 目前我正在从pojos列表映射到记录,我希望能够一次插入多行。我如何在JOOQ中用一个事务做到这一点? 我曾尝试将列表放入“值”中,但出现异常“值的数量必须与字段的数量匹配”

  • 问题内容: 有没有办法插入预设值和我从选择查询中获得的值?例如: 我有“字符串”的值和数字5,但是我必须从这样的选择中找到[int]值: 那给我那个ID放在table1里面。 如何将其合并为一个语句? 问题答案: 使用查询,并将已知值放入: