sql - 我已经指定了不同的表名以避免歧义仍然存在错误
问题描述
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
我得到的错误: -
消息 8156,级别 16,状态 1,第 24 行 为“tbl_name”多次指定了“EmployeeNumber”列。
解决方案
问题是您在联接中的两个表中都有相同的列。而不是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;
此外,查看查询,以下内容也将比您当前的查询更好
SELECT
*
FROM tblEmployee E
WHERE EXISTS
(
SELECT 1 FROM tblTransaction T WHERE EmployeeNumber = E.EmployeeNumber
)
这将以更好的性能给出相同的结果
推荐阅读
- cassandra - 避免 cassandra 中的僵尸数据
- jsf - 如何防止在 WebLogic 中使用 JSESSIONID 重写 URL?
- android - iOS/Android Flutter 的区别
- git - git第二次将发布分支合并到主分支的最有效方法
- plsql - 事务管理相关问题
- javascript - 将 Vtt 文件从 express 服务器发送到客户端
- flutter - 通过插入视频链接从 tiktok 下载视频。颤振/飞镖
- eclipse-cdt - eclipse上CppStyle插件的问题
- javascript - 我正在尝试安装 Material Top Tabs Navigator React Native 6.xx 版,但出现错误
- html - 当页面包含溢出表格时,HTML 电子邮件的视口缩放不起作用