MySQL:嵌套的更好解决方案

时间:2017-07-04 05:57:44

标签: mysql sql

我有链接: Types Of Triangle

我的回答是:

SELECT IF (A = B AND A = C AND B = C, 'Equilateral', IF((A = B OR A = C OR B = C) AND (A + B) > C, 'Isosceles', IF (A != B AND A != C AND B != C AND (A + B) > C, 'Scalene', 'Not A Triangle'))) FROM TRIANGLES

到目前为止,它是正确的但不知何故我使用了凌乱的嵌套 IF

我的问题是,在优雅和效率方面有更好的解决方法吗?我多年来对SQL查询很熟悉,但由于我更喜欢​​前端开发,所以我很少使用它。

感谢。

2 个答案:

答案 0 :(得分:3)

您需要使用CASE语句而不是IF:

SELECT 
CASE WHEN (A = B AND A = C) then 'Equilateral'
WHEN ((A = B OR A = C OR B = C) AND (A + B) > C) then 'Isosceles'
WHEN (A != B AND A != C AND B != C AND (A + B) > C) then 'Scalene'
ELSE 'Not A Triangle'
END AS "Type of Triangle"
FROM TRIANGLES

答案 1 :(得分:1)

您可以使用CASE

SELECT  CASE
            WHEN A = B AND A = C AND B = C THEN 'Equilateral'
            WHEN A = B OR A = C OR B = C AND (A + B) > C THEN 'Isosceles'
            WHEN A != B AND A != C AND B != C AND (A + B) > C THEN 'Scalene'
            ELSE 'Not A Triangle'
        END
FROM    TRIANGLES