Sql server &引用;“不明确的列名”;加入表格时
我很难从连接这两个表中提取用户ID 我的目标是找到所有超过200的假期余额和所有活动userID,但我一直得到一个不明确的userID列名 如果我尝试拉取任何其他内容,我的查询确实有效,但我想拉取UserID。如果您对我的问题有任何帮助,我们将不胜感激 这是我的表及其列: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 (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不关心它们是否为相同的值)。可能重复此值,谢谢!正是我需要的