【问题标题】:SQL Server : Update with WhereSQL Server:使用 Where 更新
【发布时间】:2014-09-30 22:01:48
【问题描述】:

我仍在学习 SQL,并且一直在网上寻找解决方案。由于某种原因,我无法 100% 掌握此查询的概念。我已经在这上面呆了几天了,却无处可去。我提前道歉,我相信这对你们大多数人来说很简单。

我在同一个数据库中有一个名为dbo.personnelUDFdbo.personnel 的表。 dbo.personnelUDF 引用回 dbo.personnel.personid。基本上,我需要找到位于dbo.personneludf.employee_id_ 的值并更新dbo.personneludf.active_fueler_ = '1'

这就是我得到的......我做错了什么??

UPDATE dbo.PersonnelUDF
SET Active_Fueler_ = '1'
FROM dbo.PersonnelUDF AS a 
INNER JOIN dbo.Personnel ON dbo.Personnel.ObjectID = dbo.PersonnelUDF.ObjectID
WHERE dbo.PersonnelUDF.Employee_ID_ = 123456

错误:

消息 4104,第 16 级,状态 1,第 4 行
无法绑定多部分标识符“dbo.PersonnelUDF.ObjectID”。
消息 4104,第 16 级,状态 1,第 5 行
无法绑定多部分标识符“dbo.PersonnelUDF.Employee_ID_”。

【问题讨论】:

    标签: sql-server sql-server-2008 join sql-update


    【解决方案1】:

    你已经给表起了别名,然后没有使用它,你可以这样做

    UPDATE dbo.PersonnelUDF
    set Active_Fueler_ = '1'
    from dbo.PersonnelUDF INNER JOIN dbo.Personnel
    ON dbo.Personnel.ObjectID=dbo.PersonnelUDF.ObjectID
    where dbo.PersonnelUDF.Employee_ID_=123456
    

    UPDATE A
    set Active_Fueler_ = '1'
    from dbo.PersonnelUDF AS A INNER JOIN dbo.Personnel
    ON dbo.Personnel.ObjectID = A.ObjectID
    where A.Employee_ID_=123456
    

    【讨论】:

      【解决方案2】:

      错误是因为您在 FROM 子句“AS a”中使用了 PersonnelUDF 别名。如果你摆脱它,它应该可以工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-11
        • 2010-12-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-03
        • 1970-01-01
        相关资源
        最近更新 更多