zoukankan      html  css  js  c++  java
  • 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” 的错误。
    问题很简单,但是还是记录下来,好记性不如一个烂笔头


  • 相关阅读:
    UVAlive5135_Mining Your Own Business
    UVAlive3523_Knights of the Round Table
    UVA10759_Dice Throwing
    POJ3177_Redundant Paths
    UVA11027_Palindromic Permutation
    Codechef_JULY14
    UVAlive4255_Guess
    UVA10054_The Necklace
    杜教BM
    【2018徐州网络赛】Morgana Net (矩阵快速幂)
  • 原文地址:https://www.cnblogs.com/windfighter/p/1563918.html
Copyright © 2011-2022 走看看