模糊列名称错误,我该如何解决?

Ala*_*lan 10 sql t-sql sql-server

1. Users 4 Cols
UserID - UserName - RealName - Flags

2. UsersGroups 2 Cols
UserID - GroupID

3. Groups 3 Cols
GroupID - GroupName - Flags
Run Code Online (Sandbox Code Playgroud)

我想要做的是选择一个特定的UserName即USERA并更新Flags列.但我还想将Groups表中的Flags列更新为相同的值.

UPDATE dbo.Users
SET Flags = @var
WHERE UserName = 'UserA'

UPDATE dbo.Groups
SET Flags = @var
FROM dbo.Users u INNER JOIN dbo.UsersGroups ug ON u.UserID = ug.UserID
INNER JOIN dbo.Groups g ON g.GroupID = ug.GroupID
WHERE u.UserName = 'UserA'
Run Code Online (Sandbox Code Playgroud)

但我不断得到:不明确的专栏名称'Flags'.

如果我设置Groups.Flags = @Var我得到:消息4104,级别16,状态1,行1无法绑定多部分标识符"Groupy.Flags".

Jos*_*lio 18

您需要为Groups表添加别名.改变这个:

UPDATE dbo.Groups
SET Flags = @var
FROM dbo.Users u INNER JOIN dbo.UsersGroups ug ON u.UserID = ug.UserID
INNER JOIN dbo.Groups g ON g.GroupID = ug.GroupID
WHERE u.UserName = 'UserA'
Run Code Online (Sandbox Code Playgroud)

对此:

UPDATE g -- change dbo.Groups here to simply 'g'
SET g.Flags = @var
FROM dbo.Users u INNER JOIN dbo.UsersGroups ug ON u.UserID = ug.UserID
INNER JOIN dbo.Groups g ON g.GroupID = ug.GroupID
WHERE u.UserName = 'UserA'
Run Code Online (Sandbox Code Playgroud)

  • 我将UPDATE语句的开头更改为"UPDATE g"而不是"UPDATE dbo.Groups".请试试. (2认同)

Joh*_*nFx 5

问题是您没有为字段"Flags"指定表名,它可能存在于查询中的多个表中.将表格名称"Tablename.flags"添加到所有引用的前面以解决问题.


Ser*_*gio 1

youTableAlias.Flags

在你的例子中:g.Flags