You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL三角形类型判断查询语句报错:语法错误位于=前的问题排查

排查与修正你的三角形类型判断SQL语句

首先,你的语句里有几个关键的语法和逻辑问题,我来逐一拆解并修正:

  1. 错误的多值比较写法
    SQL不支持a=b=c或者a<>b<>c这种连续比较的语法,必须用AND来连接多个独立的比较条件:

    • 等边三角形的正确写法是 a = b AND b = c
    • 不等边三角形需要同时判断三边两两不等:a <> b AND b <> c AND a <> c
  2. 条件顺序逻辑颠倒
    判断「不是三角形」的条件必须放在最前面!如果三条边连三角形的基本要求都不满足,后面的类型判断完全没有意义。而且还要补充另外两组边的判断:(a+c) <= b和(b+c) <= a,只要满足其中一个就不是有效三角形。

  3. 列别名重复混淆
    你用了t_name作为结果列的别名,但原表已经有t_name列,这会导致命名混淆,建议改成t_type更清晰。

  4. 等腰与等边的优先级问题
    等边三角形是等腰三角形的特殊情况,必须把等边的判断放在等腰前面,否则等边的情况会被先判定为等腰,得不到正确结果。


修正后的完整SQL语句如下:

SELECT 
    t_name,
    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 t_type
FROM triangles;

逻辑说明:

  • 先校验三角形的核心规则:任意两边之和必须大于第三边(用<=覆盖了退化三角形的情况)
  • 再判断最特殊的等边三角形
  • 接着判断等腰三角形(任意两边相等)
  • 最后默认返回不等边三角形(三边两两不等)

这样既解决了语法错误,也修正了逻辑漏洞,能正确处理所有边界情况。

内容的提问来源于stack exchange,提问作者Pavi Thran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:12:25