SQL如何筛选HandiCapScore比RawScore高出不足30分的记录
SQL问题修正
错误原因
原语句WHERE条件写为HandiCapScore - 30 > RawScore,等价于HandiCapScore > RawScore + 30,筛选的是HandiCapScore比RawScore高出30分以上的记录,和需求逻辑完全相反。
修正逻辑
需求要求筛选HandiCapScore比RawScore高出不足30分的记录,对应判断规则为两列的差值(HandiCapScore减RawScore)大于0、且小于30:
- 差值大于0:代表HandiCapScore确实高于RawScore,满足“高出”的前提
- 差值小于30:代表高出的分值不到30,满足“不足30分”的要求
如果业务规则允许HandiCapScore小于等于RawScore的记录也返回,可去掉差值大于0的判断条件。
修正后完整代码
SELECT A.BowlerID, BowlerFirstName, BowlerLastName, WonGame, RawScore, HandiCapScore FROM Bowlers A INNER JOIN Bowler_Scores B ON A.BowlerID = B.BowlerID WHERE HandiCapScore - RawScore < 30 AND HandiCapScore > RawScore;
内容的提问来源于stack exchange,提问作者Joshua Bruce
相关产品推荐
相关产品推荐

