Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql “不明确的列名”_Sql_Sql Order By - Fatal编程技术网

Sql “不明确的列名”

Sql “不明确的列名”,sql,sql-order-by,Sql,Sql Order By,当我执行以下查询时: select ProjectID, UserID, * from UserDetails where ProjectId='123456' order by UserID 我得到“不明确的列名UserID”作为错误 但是,当我编写与以下相同的查询时: select ProjectID, UserID, * from UserDetails UD where ProjectId='123456' order by UD.UserID 它不会抛出任何错误 有人能

当我执行以下查询时:

select ProjectID, UserID, * 
from UserDetails 
where ProjectId='123456' 
order by UserID
我得到“不明确的列名UserID”作为错误

但是,当我编写与以下相同的查询时:

select ProjectID, UserID, * 
from UserDetails UD 
where ProjectId='123456' 
order by UD.UserID
它不会抛出任何错误


有人能解释一下为什么会发生这种情况吗?

这是因为您已经选择了两次列。使用通配符*选择所有列。第二个查询不会像您注意到的那样抛出错误,因为您已经为一组字段设置了别名,因此与另一组字段没有重叠。

为了快速澄清,order by UD.UserId会在select中创建别名。这就是为什么第二个查询没有显示错误。因为指定了表。

*扩展到所有列,其中包括另一个UserID实例。您选择列两次…显式通过UserID,隐式通过*@bub我明白您的意思。但在第二个查询中也会发生同样的情况。是吗?@Darshan是的,它会这样做第二次查询不会抛出错误,因为您已经对一组字段使用了别名,所以与另一组字段没有重叠。不完全是这样。别名是这里的UD,来自UserDetails UD