当我执行以下查询时:
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
它不会抛出任何错误。
有人可以解释为什么会这样吗?
答案 0 :(得分:1)
这是因为您选择了两次列。使用通配符*
选择所有列。第二个查询不会引发错误,因为您已经将一组字段别名,因此与另一组字段没有重叠。
答案 1 :(得分:0)
为了快速说明,UD.UserId的顺序在select中创建了Alias。这就是第二个查询没有显示错误的原因。因为表已被指定。