我遇到了一个问题,我正在处理表别名并遇到一个奇怪的问题。当我不使用表别名时,我可以使用null作为列名,但如果我使用表别名,我会遇到问题。
works!
select top 10 eid, null as emp_no from employee
does not work!!
select top 10 e.eid, null as e.emp_no from employee e
有出路吗?当我加入另一张桌子时,我遇到了一个问题。
Trying to make it work !
select top 10 e.eid, null as e.emp_no, ed.desgination from employee e
inner join employee_designations ed on e.eid=ed.eid
Error
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '.'.
答案 0 :(得分:9)
尝试:
select top 10 e.eid, null as emp_no from employee e
您可以使用别名NULL
,但如果您声称它来自表别名e
,那么SQL将会产生异议。
<强>更新强>:
要在联接中使用NULL
,请将其转换为子查询:
SELECT e.eid
, e.emp_no
FROM (
SELECT TOP 10 eid
, NULL AS emp_no
FROM employee
) AS e
将子查询别名为e
,现在SQL很乐意接受NULL
为e.emp_no
。
答案 1 :(得分:0)
我不是百分百肯定,但是这个错误被抛出,因为当你为一个列赋值时,这不再是你的表列,只是一个'虚拟'列,所以这就是为什么你不能给该列的别名,只是因为这不是列表
为什么呢?如果表具有相同的列名,它会返回Ambiguous column name
,但是你要分配一个值,所以你没有得到这个列名,你可以在查询synthax中简单地做null as emp_no
,因为这emp_no不是来自内连接synthax的任何列,只需调用:
select top 10 e.eid, null as emp_no, ed.desgination from employee e
inner join employee_designations ed on e.eid=ed.eid