我司大部分数据库使用MS-SQL,其中使用大量–开头的行注释,由于业务需要,切换到了Starrocks数据库(兼容mysql语法)后发现使用with开头子查询的时候,大量报错,单独执行内部的子查询又正常,删了where条件也正常。后来在乙方人员协助下发现,是由于子查询里面的where条件使用了–行注释,–后面又没有空格,后面加了个空格就正常了。具体来说,with子查询内部的where条件,如果使用使用了–注释,必须把 --XX 改成 – XX,中间必须有空格
但实际上,mysql要求-- 注释后必须带空格,一些开发工具也会提示,建议全部加上空格,养成良好习惯