我收到错误 SQL 消息 4104

Posted

技术标签:

【中文标题】我收到错误 SQL 消息 4104【英文标题】:I get error SQL Msg 4104 【发布时间】:2016-09-22 19:10:36 【问题描述】:

使用此代码:

UPDATE MyBase.dbo.Inventory
SET Inventory.BarCode= Table1.Barcode
FROM Market.dbo.Table1, MyBase.dbo.Inventory
WHERE Table1.Barcode=Inventory.BarCode 

我收到错误消息:Msg 4104, Level 16, State 1, Line 1 无法绑定多部分标识符“Table1.Barcode”。

【问题讨论】:

【参考方案1】:
UPDATE t2 
SET t2.BarCode= t1.Barcode 
FROM Market.dbo.Table1 t1
join
 MyBase.dbo.Inventory t2 on t1.Barcode collate SQL_Latin1_General_CP1253_CI_AS=t2.BarCode collate SQL_Latin1_General_CP1253_CI_AS

问题是,由于您没有使用 DBname 限定它并且您可能不在同一个数据库中,还使用别名使其更具可读性..

还可以查看下面的链接以了解更多关于排序规则的所有答案。

Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation

【讨论】:

应该是开启的,我加了 现在我得到错误:无法解决等于操作中“SQL_Latin1_General_CP1253_CI_AS”和“Greek_CI_AS”之间的排序规则冲突。 尝试使用 collat​​e SQL_Latin1_General_CP1253_CI_AS @DiH:查看更新的答案,您也可以发布所涉及表的表架构 我该怎么做?我没有再做一次。感谢您的回答!【参考方案2】:

您应该为此使用显式连接,并为您的表提供适当的别名:

UPDATE I
SET I.BarCode = T.Barcode 
FROM MyBase.dbo.Inventory I
INNER JOIN Market.dbo.Table1 T
    ON I.BarCode = T.Barcode;

【讨论】:

以上是关于我收到错误 SQL 消息 4104的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pl/sql 块插入多条记录?我在这段代码中收到错误消息

为什么我一直在SQL上得到相同的错误消息

需要 SQL 查询帮助并显示错误消息操作数应包含 1 列

如何在spring mvc 3.0中的同一jsp中显示运行时错误消息或sql错误消息

为啥我收到错误消息:没有名为“email.MIMEMultipart”的模块?

为啥我会收到错误消息?