SQL在不同库而相同记录的表上执行结果不同


有一个SQL 语句,在测试库和生产库上跑出来的结果不一样。但两个库上表的数据都是一样的。SQL 是一个简单的排序查询,翻页。

聪明的您,能一眼看出来这是什么原因导致的呢?

select *

  from (select row_.*, rowid rowid_, rownum rownum_

          from (select notice_id,

                       sec_name,

                       start_date,

                       end_date,

                       not_type,

                       content

                  from secnotice_view

                 where start_date >= trunc(sysdate, 'yyyy')

                   and start_date <= sysdate

                   and notice_id <> 0

                 order by start_date desc) row_

         where rownum <= 20)

 where rownum_ > 0

 

在测试库上:

《图片贴不上来》

 

在生产库上:

《图片贴不上来》

 

查询出来的结果都是5 月9 日的,结果集确实不一样!

 

这个类似问题在以前也碰到,那是这样的排序、翻页查询,不同页面居然有相同的记录数据,显得更诡异!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在SQL中,可以使用GROUP BY子句结合聚合函数来合并具有相同字段值的多行记录。 假设有一个名为"student"的表,包含了学生的姓名(name)、年龄(age)和性别(gender)字段。现在我们想要找出相同姓名的学生,并将他们的年龄的总和计算出来。 可以使用以下语句来实现: SELECT name, SUM(age) as total_age FROM student GROUP BY name 上述语句中,首先使用GROUP BY子句根据姓名字段对记录进行分组,然后使用SUM函数计算每个分组中的年龄的总和,并将结果命名为total_age。最终的结果将会显示每个姓名以及对应的年龄总和。 比如,如果表中有以下数据: 姓名 | 年龄 | 性别 ----|-----|----- 张三 | 18 | 男性 张三 | 20 | 女性 李四 | 22 | 男性 李四 | 25 | 女性 执行以上SQL语句后,将会得到以下结果: 姓名 | 总年龄 ----|------ 张三 | 38 李四 | 47 可以看到,相同姓名的学生的年龄被合并,并计算出了总和。 这样,我们就使用SQL成功地合并了多行记录相同字段值的数据。 ### 回答2: 在SQL中,我们可以使用聚合函数和GROUP BY子句来合并多行记录相同字段值。 首先,我们需要使用SELECT语句选择需要合并的字段以及需要进行聚合的字段。例如,我们有一个名为"students"的表格,包含学生的学号(StudentID)和成绩(Score)两个字段,我们要合并相同学号的成绩,可以使用以下语句: SELECT StudentID, SUM(Score) AS TotalScore FROM students GROUP BY StudentID 上述语句中,我们使用GROUP BY语句将相同的学号进行分组,然后使用SUM函数对每个分组的成绩进行求和。使用AS关键字可以给聚合后的结果起一个别名,这里将聚合后的成绩总和命名为TotalScore。 执行这条语句后,就可以得到一个合并了相同学号成绩的结果集。结果集中每一行表示一个学号以及该学号对应的成绩总和。 除了SUM函数外,还可以使用其他聚合函数如COUNT、AVG、MAX或MIN等来合并多行记录的字段值,具体根据需求进行选择。 注意,在使用GROUP BY子句时,除了选择的字段外,其他非聚合字段(如姓名、年龄等)都需要包含在GROUP BY子句中。 ### 回答3: 在SQL中,要合并多行记录相同字段值,可以使用聚合函数和GROUP BY语句进行操作。 假设有一个名为"student"的表,其中包含学生姓名和对应的成绩。现在我们要合并相同姓名的学生成绩,可以使用以下SQL语句: SELECT 姓名, SUM(成绩) AS 总成绩 FROM student GROUP BY 姓名 上述语句中,我们使用了聚合函数SUM来求得每个学生的总成绩。同时,通过GROUP BY语句将相同姓名的记录进行分组,使得合并操作只对相同姓名的记录有效。 通过以上的SQL查询,我们可以得到合并后的结果,其中包含每个学生的姓名和对应的总成绩。这样就实现了合并多行记录相同字段值的目的。 需要注意的是,如果有其他需要合并的字段,可以在SELECT语句中添加相应的字段,并且在GROUP BY语句中也要对应地加入这些字段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值