oracle 同样的SQL在不同机器上运行得到的结果不一样。 20
各位大侠,oracle10g没用过,两台电脑都是的同样版本的Oracle运行同样的sql,却得到的是两个不同的结果。结果1:KAISHA_CDKAISHA_SHITEN_...
各位大侠,oracle 10g没用过,两台电脑都是的同样版本的Oracle
运行同样的sql,却得到的是两个不同的结果。
结果1:
KAISHA_CD KAISHA_SHITEN_CD KAISHA_NM
0000000 00 会社名00000001
0000000 02 会社名00000001
0000000 01 会社名00000001
结果2:
KAISHA_CD KAISHA_SHITEN_CD KAISHA_NM
0000000 00 会社名00000001
0000000 01 会社名00000001
0000000 02 会社名00000001
请问这是怎么一回事?
以下是SQL,请高手支招。是不是oracle中哪个设置弄错了?
select
K.KAISHA_CD,
KS.KAISHA_SHITEN_CD,
K.KAISHA_NM,
K.HOJIN_SHU_KU,
K.ZENGO_KU,
KS.KAISHA_SHITEN_NM,
KS.JUSHO_1 JUSHO1,
KS.JUSHO_2 JUSHO2,
KS.JUSHO_3 JUSHO3,
'' as OLD_KAISHA_NM,
'' as OLD_HOJIN_SHU_KU,
'' as OLD_ZENGO_KU,
KS.TEISHI_RIYU_KU,
KS.HONSHA_SHISHA_KU,
STI.KNR_NO,
STI.HYOKA,
STI.ZAIMU_TENSU
from
M_KB_GYSHNV_STI STI,
M_ZZ_KAISHA K,
M_ZZ_KAISHA_SHITEN KS
where
STI.DEL_FLG ='0'
and STI.CUST_CD =KS.KAISHA_CD
and KS.DEL_FLG ='0'
and STI.CUST_CD = K.KAISHA_CD
and K.DEL_FLG ='0'
and rownum between 1 and 10
and KS.KAISHA_CD like '000000%'
and K.KAISHA_NM like '会社名0000000%'
and KS.KAISHA_SHITEN_CD like '0%'
and KS.KAISHA_SHITEN_NM like '会社支店名00000000%'
and KS.TEISHI_RIYU_KU = '00'
order by
K.KAISHA_NM DESC
这个的确蛮奇怪的,有些机器上又会有,有些又没有
如果以 K.KAISHA_CD ASC的话,那么KAISHA_SHITEN_CD的顺序怎么还是00,02,01啊
KAISHA_CD KAISHA_SHITEN_CD KAISHA_NM
0000000 00 会社名00000001
0000000 02 会社名00000001
0000000 01 会社名00000001 展开
运行同样的sql,却得到的是两个不同的结果。
结果1:
KAISHA_CD KAISHA_SHITEN_CD KAISHA_NM
0000000 00 会社名00000001
0000000 02 会社名00000001
0000000 01 会社名00000001
结果2:
KAISHA_CD KAISHA_SHITEN_CD KAISHA_NM
0000000 00 会社名00000001
0000000 01 会社名00000001
0000000 02 会社名00000001
请问这是怎么一回事?
以下是SQL,请高手支招。是不是oracle中哪个设置弄错了?
select
K.KAISHA_CD,
KS.KAISHA_SHITEN_CD,
K.KAISHA_NM,
K.HOJIN_SHU_KU,
K.ZENGO_KU,
KS.KAISHA_SHITEN_NM,
KS.JUSHO_1 JUSHO1,
KS.JUSHO_2 JUSHO2,
KS.JUSHO_3 JUSHO3,
'' as OLD_KAISHA_NM,
'' as OLD_HOJIN_SHU_KU,
'' as OLD_ZENGO_KU,
KS.TEISHI_RIYU_KU,
KS.HONSHA_SHISHA_KU,
STI.KNR_NO,
STI.HYOKA,
STI.ZAIMU_TENSU
from
M_KB_GYSHNV_STI STI,
M_ZZ_KAISHA K,
M_ZZ_KAISHA_SHITEN KS
where
STI.DEL_FLG ='0'
and STI.CUST_CD =KS.KAISHA_CD
and KS.DEL_FLG ='0'
and STI.CUST_CD = K.KAISHA_CD
and K.DEL_FLG ='0'
and rownum between 1 and 10
and KS.KAISHA_CD like '000000%'
and K.KAISHA_NM like '会社名0000000%'
and KS.KAISHA_SHITEN_CD like '0%'
and KS.KAISHA_SHITEN_NM like '会社支店名00000000%'
and KS.TEISHI_RIYU_KU = '00'
order by
K.KAISHA_NM DESC
这个的确蛮奇怪的,有些机器上又会有,有些又没有
如果以 K.KAISHA_CD ASC的话,那么KAISHA_SHITEN_CD的顺序怎么还是00,02,01啊
KAISHA_CD KAISHA_SHITEN_CD KAISHA_NM
0000000 00 会社名00000001
0000000 02 会社名00000001
0000000 01 会社名00000001 展开
展开全部
没什么问题不是设置问题,你把
【order by K.KAISHA_NM DESC 】改成【order by K.KAISHA_SHITEN_CD】两遍的结果就一样了。
至于你不一样的原因我大致解释一下:
因为你两个表中数据存储的顺序不一样(不要相信insert的顺序,数据存储顺序和insert顺序没关系的),而【KAISHA_NM】的值又都是一样的对他进行【order by】的效果等于没效果,所以你的检索就出现不一样了。
*********************
补充:
我解释过了,数据的检索顺序和插入顺序是没有关系的。
你使用【K.KAISHA_CD ASC】而你的三条数据【KAISHA_CD】是完全相同的,所以数据库中【KAISHA_SHITEN_CD】存储成什么样检索出来自然就是什么样了。出现上面的结果就不奇怪了。
再补充一点:检索出的顺序还和sql文有关,即便是你的数据库中的数据没有变动,用两个不同的sql检索同一个表,数据的检出顺序也有可能是不同的。
*********************
---
以上,希望对你有所帮助。
【order by K.KAISHA_NM DESC 】改成【order by K.KAISHA_SHITEN_CD】两遍的结果就一样了。
至于你不一样的原因我大致解释一下:
因为你两个表中数据存储的顺序不一样(不要相信insert的顺序,数据存储顺序和insert顺序没关系的),而【KAISHA_NM】的值又都是一样的对他进行【order by】的效果等于没效果,所以你的检索就出现不一样了。
*********************
补充:
我解释过了,数据的检索顺序和插入顺序是没有关系的。
你使用【K.KAISHA_CD ASC】而你的三条数据【KAISHA_CD】是完全相同的,所以数据库中【KAISHA_SHITEN_CD】存储成什么样检索出来自然就是什么样了。出现上面的结果就不奇怪了。
再补充一点:检索出的顺序还和sql文有关,即便是你的数据库中的数据没有变动,用两个不同的sql检索同一个表,数据的检出顺序也有可能是不同的。
*********************
---
以上,希望对你有所帮助。
仁科信息
2024-07-24 广告
2024-07-24 广告
Oracle EBS运维是确保企业资源规划系统稳定、高效运行的关键环节。它涵盖了系统监控、性能优化、故障排查与恢复等多方面内容。通过持续的监控和数据分析,运维团队能够及时发现并解决潜在问题,保障系统的稳定性和安全性。同时,他们还需要与业务部...
点击进入详情页
本回答由仁科信息提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询