SQL Server中SELECT Column1,*排序列名歧义报错的原因解析
问题原因解析
先看报错的语句:
SELECT Column1, * FROM MyTable ORDER BY Column1;
这条语句报错的核心是:当你同时显式列出Column1和使用通配符*时,查询返回的结果集里会出现两个完全同名的Column1列——一个是你单独指定的Column1,另一个是*展开后包含的原表MyTable的Column1。此时ORDER BY子句里只写Column1,SQL Server无法确定你要排序的是哪一个,所以抛出「Ambiguous column name 'Column1'」的错误。
再看正常执行的语句:
SELECT Column1, * FROM MyTable ORDER BY MyTable.Column1;
这条语句通过给列名加上表名前缀MyTable.,明确指定了排序依据的是原表中的Column1列,直接消除了列名的歧义,因此SQL Server可以准确识别目标列,不会报错。
内容的提问来源于stack exchange,提问作者Troy Guessford
相关产品推荐
相关产品推荐

