列名在order by子句中使用时出现模糊错误

Sha*_*hul 0 sql t-sql sql-server

我在下面遇到过一个问题

SELECT ColumnName1,* 
FROM TableName 
WHERE ColumnName = 'XXXXXX'
ORDER BY ColumnName1
Run Code Online (Sandbox Code Playgroud)

从上面的查询中,它会将错误抛出为不明确的列名列Column1.

即使我没有使用数字表,它也会抛出这样的错误.任何人都能说出这背后的原因.

Gor*_*off 5

因为SELECT有两列叫ColumnName1- 一个明确放在那里,一个放在那里*.以下是一些选择:

SELECT t.ColumnName1, t.*
FROM TableName t
WHERE t.ColumnName = 'XXXXXX'
ORDER BY t.ColumnName1 
Run Code Online (Sandbox Code Playgroud)

要么:

SELECT t.ColumnName1, t.*
FROM TableName t
WHERE t.ColumnName = 'XXXXXX'
ORDER BY 1
Run Code Online (Sandbox Code Playgroud)

要么:

SELECT t.ColumnName1 as second_columnname1, t.*
FROM TableName t
WHERE t.ColumnName = 'XXXXXX'
ORDER BY second_columnname1
Run Code Online (Sandbox Code Playgroud)