Sql 获取唯一列名以允许创建视图?
我目前正在尝试通过执行联接从两个表创建视图,我在这里使用了一些方法,但仍然遇到以下错误: Msg 4506,16级,状态>1,程序vw_员工,第3行[批次起始第19行] 每个视图或函数中的列名必须是唯一的。多次指定视图或函数“vw_Employee”中的列名“empNumber” 我的看法如下:Sql 获取唯一列名以允许创建视图?,sql,sql-server,sql-view,Sql,Sql Server,Sql View,我目前正在尝试通过执行联接从两个表创建视图,我在这里使用了一些方法,但仍然遇到以下错误: Msg 4506,16级,状态>1,程序vw_员工,第3行[批次起始第19行] 每个视图或函数中的列名必须是唯一的。多次指定视图或函数“vw_Employee”中的列名“empNumber” 我的看法如下: create view vw_Employee as ( select * from Employees e1 inner join EmpInfo e2 on e2.emp
create view vw_Employee as
(
select *
from Employees e1
inner join EmpInfo e2 on e2.empNumber = e1.empNumber
)
这是因为这两个表都有EMPNAME列,您使用*进行选择。select中的列名不应存在任何歧义/冲突。假设唯一的公共列名是empNumber
create view vw_Employee as
(
select * from Employees e1 inner join EmpInfo e2
using (empNumber)
)
我建议您明确列出所需的所有列名
create view vw_Employee as
(
select e1.empNumber, . . .
from Employees e1 inner join EmpInfo e2
on e2.empNumber = e1.empNumber
)
编辑:
根据您的评论,请尝试:
create view vw_Employee
as
(
select e1.empNumber,
e1.firstName,
e1.lastName,
e1.ssn,
e1.job,
e1.projectId,
e2.[address],
e2.[state],
e2.zip,
from Employees e1
inner join EmpInfo e2 on e2.empNumber = e1.empNumber
)
这是因为这两个表都有EMPNAME列,您使用*进行选择。select中的列名不应存在任何歧义/冲突。假设唯一的公共列名是empNumber
create view vw_Employee as
(
select * from Employees e1 inner join EmpInfo e2
using (empNumber)
)
我建议您明确列出所需的所有列名
create view vw_Employee as
(
select e1.empNumber, . . .
from Employees e1 inner join EmpInfo e2
on e2.empNumber = e1.empNumber
)
编辑:
根据您的评论,请尝试:
create view vw_Employee
as
(
select e1.empNumber,
e1.firstName,
e1.lastName,
e1.ssn,
e1.job,
e1.projectId,
e2.[address],
e2.[state],
e2.zip,
from Employees e1
inner join EmpInfo e2 on e2.empNumber = e1.empNumber
)
您必须在select查询中写入列名,并仅取e1.EMPNAME您必须在select查询中写入列名,并仅取e1.EMPNAME创建视图vw_Employee作为select e1.EMPNAME、e1.firstName、e1.lastName、e1.ssn、e1.job、e1.projectId、e2.[address],e2.[state],e2.zip,e2.EMPNAME来自员工e1内部加入e2.EMPNAME=e1.EMPNAME@Danny上的EmpInfo e2-现在查看我答案中的编辑。完美,按预期工作。因此,当连接两个表以创建视图时,我不必从第二个表中声明列,因为我已经从第一个表中选择了它。@Danny-是。创建视图vw_Employee作为select e1.empNumber,e1.firstName,e1.lastName,e1.ssn,e1.job,e1.projectd,e2.[address],e2.[state],e2.zip,e2.empNumber from Employees e1 internal join EmpInfo on e2.empNumber=e1.empNumber@Danny-现在查看我答案中的编辑。完美,按预期工作。因此,当连接两个表以创建视图时,我不必从第二个表中声明列,因为我已经从第一个表中选择了它。@Danny-是。确切地