在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

怎么进行SQL问题的诊断

153次阅读
没有评论

共计 2243 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章将为大家详细讲解有关怎么进行 SQL 问题的诊断,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

问题 诊断 用户反应有一个员工不能设置他的考勤月历了。补充说明,我们员工上班都是按周一到周五上班,朝 8 晚 5 下班,但也有上三天晚班休息两天的上班制度,所以要设置
员工的上班制度。而现在不能设置这个员工的上班制度了,那么这个员工也没法提交加班申请等操作了。而且快到工资结算的时候,如果不能及时提交考勤和加班等信息,就会影响
最后的工资发放。要及时处理这个问题,只好和开发人员一起查找正式系统上的日志。还好和开发人员一起梳理逻辑,很快就找到了可能有问题的 SQL. 但此 SQL 执行正常不知道为什么会查询出
不需要的员工信息,这是查询出了这个员工不符合要求,所以系统才删除了这条不符合逻辑的数据。
这是 DBA 介入调试此 SQL,查找错误查询的原因。发现相关表中存在的数据如下  
SELECT  APPNT_DATE
  ,APPNT_CD
  ,APPNT_SEQ
  ,ACTI_STTS_CD
FROM  MEMP_AP_APPNT_DET
WHERE  ten_id= T01
AND SITE_ID= EZ00
AND EMP_ID = 2F4EE7C0599E11E0B358975729707EA8
AND APPNT_DATE = 20180301

APPNT_DATE  APPNT_CD  APPNT_SEQ ACTI_STTS_CD
20180301  AB  10  AA
20180301  DC  9  DA
20180301  YB  8  AA
而程序会对这个表的 APPNT_SEQ 值求最大值,以此找出这天里员工的最后的状态值
但 SQL 中的查询条件是这样的

AND R.APPNT_DATE||R.APPNT_SEQ = (SELECT MAX(X1.APPNT_DATE||X1.APPNT_SEQ)
  FROM MEMP_AP_APPNT_DET X1
  WHERE X1.TEN_ID = R.TEN_ID
  AND X1.SITE_ID = R.SITE_ID
  AND X1.EMP_ID = R.EMP_ID
  AND X1.APPNT_DATE = 20180329 )
 
一看到 || 还做比较就感觉要出事,赶紧把这段 SQL 拿到生产环境执行了一把。查询出的数据中有不想要的数据。于是在  R.APPNT_DATE||R.APPNT_SEQ 前面加 TO_NUMBER()
再执行不想要的数据不见了。这说明  R.APPNT_DATE||R.APPNT_SEQ 拼出的结果是字符类型,这种字符类型比较后和数字类型比较是有区别的  
比如 201803019 2018030110 所以最大结果是 201803019 , 而不是 2018030110

最终修改后的 SQL
 
  SELECT N.TEN_ID
  , …
  FROM TTNA_TBS_PERSN_MAS N
  , MEMP_AP_APPNT_DET R — CUR
  , MEMP_AP_APPNT_DET S — PAST
  WHERE N.TEN_ID = T01
  AND N.SITE_ID = EZ00
  AND N.EMP_ID = N.EMP_ID–NVL(null , N.EMP_ID)
  AND N.TEN_ID = R.TEN_ID
  AND N.SITE_ID = R.SITE_ID
  AND N.EMP_ID = R.EMP_ID
  AND R.APPNT_DATE BETWEEN TO_CHAR(TO_DATE( 20180329 , YYYYMMDD)-100, YYYYMMDD ) AND 20180329
  …
  AND TO_NUMBER(R.APPNT_DATE||R.APPNT_SEQ) = (SELECT MAX(TO_NUMBER(X1.APPNT_DATE||X1.APPNT_SEQ)) –update
  FROM MEMP_AP_APPNT_DET X1
  WHERE X1.TEN_ID = R.TEN_ID
  AND X1.SITE_ID = R.SITE_ID
  AND X1.EMP_ID = R.EMP_ID
  AND X1.APPNT_DATE = 20180329 )
  AND TO_NUMBER(R.APPNT_DATE||R.APPNT_SEQ) TO_NUMBER(S.APPNT_DATE||S.APPNT_SEQ)  –update
  AND SUBSTR(NVL(R.ACTI_STTS_CD,), 1, 1) SUBSTR(NVL(S.ACTI_STTS_CD,), 1, 1) — ?? ?? ??
  AND TO_NUMBER(S.APPNT_DATE||S.APPNT_SEQ) = (SELECT MAX(TO_NUMBER(X2.APPNT_DATE||X2.APPNT_SEQ)) –update
  FROM MEMP_AP_APPNT_DET X2
  WHERE X2.TEN_ID = S.TEN_ID
  AND X2.SITE_ID = S.SITE_ID
  AND X2.EMP_ID = S.EMP_ID
  AND X2.APPNT_DATE R.APPNT_DATE)
  …
总结 比较过程中字符串的比较和数字类型的比较是有很大区别的。这里不用过多的查看业务的逻辑,毕竟生产环境下的 SQL 运行有一定保证,除非在某些特殊情况有一定问题,那么我们关注的是问题的细节,这里就是技术的细节。

关于怎么进行 SQL 问题的诊断就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计2243字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 国产精品九九九久久九九 | 欧美成人性色大片在线观看 | 亚洲av无码久久精品蜜桃 | 亚洲国产七七久久桃花 | 欧美日韩视频一区二区三区 | 伊人四虎 | 三级网站日本 | 日本一级高清不卡视频在线 | 成av人片在线观看www | 国产精品va在线观看无码 | 中文字幕亚洲欧美日韩不卡 | 91久久老司机福利精品网 | 女教师淫辱の教室在线 | 久久三级影院 | 久久精品丝袜高跟鞋 | 国产福利精品一区二区 | 99在线视频精品 | www.亚洲.com| 九月婷婷人人澡人人添人人爽 | 日本老熟妇乱 | 97久久人人爽人人爽人人 | 偷拍肉窝窝视频在线播放 | 日韩欧美一区二区三区久久 | 国产精品视频二区不卡 | 国产做a爰片久久毛片a片美国 | 在线看一区 | aaaaa级少妇高潮大片免费看 | 久久99亚洲网美利坚合众国 | 久久精品国产免费观看99 | 亚洲春色在线视频 | 性xxx视频在线观看 性爱免费视频 | 成人区人妻精品一区二区不卡网站 | 成年人小视频在线观看 | 亚洲综合精品成人 | 欧美aaaa黄色一级毛片 | 久久久毛片免费全部播放 | 久草成人在线视频 | 免费看美女被靠到爽的视频 | 青青国产 | 秋霞韩国理论片观看 | 日本特级黄毛片毛片视频 |