Sql server &引用;“不明确的列名”;加入表格时

Sql server &引用;“不明确的列名”;加入表格时,sql-server,Sql Server,我很难从连接这两个表中提取用户ID 我的目标是找到所有超过200的假期余额和所有活动userID,但我一直得到一个不明确的userID列名 如果我尝试拉取任何其他内容,我的查询确实有效,但我想拉取UserID。如果您对我的问题有任何帮助,我们将不胜感激 这是我的表及其列: 表用户 ID (PK) UserID Firstname Lastname Email Active (Bool) 表余额 UserID (PK) VacationBalance 这是我的疑问: SELECT UserI

我很难从连接这两个表中提取用户ID

我的目标是找到所有超过200的假期余额和所有活动userID,但我一直得到一个不明确的userID列名

如果我尝试拉取任何其他内容,我的查询确实有效,但我想拉取UserID。如果您对我的问题有任何帮助,我们将不胜感激

这是我的表及其列:

用户

ID (PK)
UserID
Firstname
Lastname
Email
Active (Bool) 
余额

UserID (PK)
VacationBalance
这是我的疑问:

SELECT UserID FROM dbo.VacBal as I join dbo.User as T
on I.userid = T.userid 
WHERE VacationBalance > 200 and active = 1 
下面是我得到的错误:

SELECT UserID FROM dbo.VacBal as I join dbo.User as T
on I.userid = T.userid 
WHERE VacationBalance > 200 and active = 1 
Msg 209,第16级,状态1,第1行不明确的列名“userid”


由于每个表都包含一个
UserID
列,因此需要通过在
SELECT
语句中包含表别名来指定
UserID
的来源:

       v
SELECT T.UserID FROM dbo.VacBal as I join dbo.User as T
on I.userid = T.userid 
WHERE VacationBalance > 200 and active = 1
试试这个:

选择UserID
从dbo.VacBal作为T加入dbo.User
使用(用户ID)
其中VacationBalance>200且active=1

出现此错误的原因是,当您连接两个或多个表时,当有多个列具有相同名称时,select将产生一个公共记录集,因此系统无法理解要将哪个值放在其中,这就是为什么系统在列名称错误消息中产生歧义

若要避免此错误,请确保在列名前面加上多个表中存在的列的表名或表别名。以下是更新后的SELECT语句,它不会生成错误:

SELECT 
    T.UserID 
FROM dbo.VacBal as I 
    join dbo.User as T on I.userid = T.userid 
WHERE VacationBalance > 200 and active = 1 

最好总是在列名前面加上表名或表别名,以便在向表中添加与另一个表中现有列同名的其他列时,不会遇到此错误。

能否澄清您使用的是MySQL还是SQL Server?两个都有标记…请阅读错误消息。在选择输出中使用
T.UserID
I.UserID
,以消除歧义(SQL Server不关心它们是否为相同的值)。可能重复此值,谢谢!正是我需要的