MySQL多IF条件使用问题:三角形类型判断查询异常求助
解决MySQL判断三角形类型的问题
原代码的问题分析
- 判断顺序错误:未优先判断是否能构成三角形,导致逻辑优先级混乱
- 条件写法错误:
A = B = C不是MySQL中正确的三边相等判断,需写成A = B AND B = CA = B != C这类表达式逻辑不严谨,应改为A = B AND B != C
- 结果拼接方式错误:用
OR连接多个IF语句会触发逻辑运算(字符串与NULL的逻辑或结果为NULL),无法得到预期的分类结果
正确实现方案
使用CASE WHEN语句按优先级依次匹配条件,确保每行返回唯一正确结果:
SELECT CASE -- 先判断是否能构成三角形:任意两边之和大于第三边 WHEN A + B <= C OR A + C <= B OR B + C <= A THEN 'Not A Triangle' -- 等边三角形:三边全相等 WHEN A = B AND B = C THEN 'Equilateral' -- 等腰三角形:任意两边相等 WHEN A = B OR B = C OR A = C THEN 'Isosceles' -- 剩余情况为不等边三角形 ELSE 'Scalene' END AS triangle_type FROM TRIANGLES;
测试验证
针对示例数据(20,20,23)和(20,20,20),执行上述SQL会得到:
triangle_type ------------- Isosceles Equilateral
内容的提问来源于stack exchange,提问作者Morteza Tajeri
相关产品推荐
相关产品推荐

