【问题标题】:SQL Server -- order by clause is dependent on (field-list, type) pairSQL Server -- order by 子句取决于 (field-list, type) 对
【发布时间】:2015-06-17 17:23:21
【问题描述】:

查询,比如“Query-1”:

select THIS_FIELD, THAT_FIELD, THAT_COUNT 
    from THE_TABLE 
    order by THIS_FIELD

THIS_FIELD 的类型为String 时运行良好。但是,下面的“Query-2”:

select THIS_FIELD, THAT_FIELD, THAT_COUNT, * 
    from THE_TABLE 
    order by THIS_FIELD

isGiving me an Ambiguous column name error 的发生 THIS_FIELD 在 select 子句中时 THIS_FIELDString 类型,当 THIS_FIELD 这里是一个整数时运行正常。

我该如何解决这个问题?

TIA。

【问题讨论】:

    标签: sql sql-server sql-order-by


    【解决方案1】:

    如果查询是这样写的,您可能只需要在 the_table 上使用别名或在列前加上表名,以便 sql 知道要加载什么。

    select ta.THIS_FIELD, ta.THAT_FIELD, ta.THAT_COUNT, ta.* 
        from THE_TABLE ta
        order by ta.THIS_FIELD
    

    【讨论】:

    • 嗯,这也可以。有趣的是,别名和非别名版本之间有什么区别。我看不出有什么不同。
    • 问题是 *;您选择了同一列两次,但不确定要按哪一列排序。
    • 这也行得通——我想到的但没有尝试过的那个,但这是我一直在寻找的快速解决方案。我可以在开发过程中轻松打字的一种。 shd 已经在 Q 中提到了。谢谢你的好答案。
    【解决方案2】:

    这只是为了让它工作。这是不相关的。

    select THIS_FIELD, THAT_FIELD, THAT_COUNT, * 
    from THE_TABLE 
    order by 1
    

    这将按序号位置工作和排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      相关资源
      最近更新 更多