我有链接: 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查询很熟悉,但由于我更喜欢前端开发,所以我很少使用它。
感谢。
答案 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