MySQL中列名与函数名重名(Left、Right)时的查询报错解决方法
解决MySQL关键字列名的查询报错问题
哈哈,这个坑我踩过!你遇到的报错原因很明确:Left和Right是MySQL的保留关键字,直接在SELECT语句里用它们当列名的话,数据库会误以为你在写SQL语法(比如LEFT JOIN里的LEFT),而不是指表中的列,所以肯定会报错。
既然不能修改表的列名,给你两个靠谱的解决方案:
方案1:用反引号包裹关键字列名
这是MySQL官方推荐的处理方式,用反引号()把Left和Right`包起来,明确告诉数据库这是列名。修改后的查询语句如下:SELECT PersonNumber, `Left`, `Right`, PhotoNumbr FROM Person;方案2:给表加别名,通过别名引用列
如果你不习惯用反引号,也可以给Person表起一个简短的别名,然后通过别名来调用这些列,这样数据库也能正确识别:SELECT p.PersonNumber, p.Left, p.Right, p.PhotoNumbr FROM Person p;不过要提醒一下,这种方式在某些SQL模式(比如ANSI模式)下可能还是会触发报错,所以方案1的反引号方法更通用、稳妥。
用上面任意一种方法,都不用改表结构,就能顺利查询到你需要的所有记录啦。
内容的提问来源于stack exchange,提问作者Bachas
相关产品推荐
相关产品推荐

