Ambiguous column name

这是个sql错误,今天遇到的一个bug,姑且把标题叫做 歧义列吧



项目中有这样一个写法 select *,ClasName From Class order by ClassName  这个是最终的生成语句。
这个语句 加粗部分是没有任何错误的。只是结果集合中会有2个相同的列 "ClassName",但是如果 order by的话,就会报
" Ambiguous column name" 的错误!如果直接写出这样的语句也许很容易就发现错误,但是由于项目中的sql是
根据业务逻辑动态拼接的。所以你不容易发现这样的错误。

其实这里有一个地方写的非常不好。就是那个* ,* 号已经囊括了所有的列。导致的重复列的出现。然后order by,或者进行聚合,group 等等操作
都会造成歧义,其实这是个不好的习惯。任何时候(在项目中)最好都不要用 * 来偷懒,项目中之所以是用 * 来替代,估计是因为项目中那张表的字段太多了。
而且* 会带来很多的开销。应该尽可能只搜索业务需要查询的列。

另外我们在innner join 等连接查询的时候,经常会用 表名.列名 来标识某一列。如果不加上也会出现 “ Ambiguous column name” 的错误。
问题很简单,但是还是记录下来,好记性不如一个烂笔头

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值