Ris*_*jan 1 sql t-sql sql-server sql-server-2012
With tbl_name as
(Select top(1000) *
from tblEmployee as E right join tblTransaction as T
on E.EmployeeNumber = T.EmployeeNumber
where E.EmployeeNumber is null
order by T.EmployeeNumber)
Select Distinct(T.EmployeeNumber) as EmployeeNum from tbl_name
Run Code Online (Sandbox Code Playgroud)
我得到的错误:-
消息 8156,级别 16,状态 1,第 24 行 为“tbl_name”多次指定了“EmployeeNumber”列。
问题是您在 Join 中拥有的两个表中都有相同的列。而不是SELECT TOP(1000) *
从正确的表中指定列名。如果 2 个表具有相同的列名,并且您在结果集中需要这两个表,请为其中一个列指定不同的别名。像这样的东西
WITH tbl_name
AS (SELECT TOP (1000)
E_EmployeeNumber = E.EmployeeNumber ,
T_EmployeeNumber = T.EmployeeNumber
FROM tblEmployee AS E
RIGHT JOIN tblTransaction AS T ON E.EmployeeNumber = T.EmployeeNumber
WHERE E.EmployeeNumber IS NULL
ORDER BY T.EmployeeNumber)
SELECT DISTINCT
(T_EmployeeNumber) AS EmployeeNum
FROM tbl_name;
Run Code Online (Sandbox Code Playgroud)
此外,查看查询,以下内容也比您当前的查询更好
SELECT
*
FROM tblEmployee E
WHERE EXISTS
(
SELECT 1 FROM tblTransaction T WHERE EmployeeNumber = E.EmployeeNumber
)
Run Code Online (Sandbox Code Playgroud)
这将给出相同的结果,并具有更好的性能
归档时间: |
|
查看次数: |
41 次 |
最近记录: |