Sql server 更新和限制的语法不正确

Sql server 更新和限制的语法不正确,sql-server,tsql,sql-update,Sql Server,Tsql,Sql Update,我从Superbase“Dailylog2”创建了一个SQL db文件,然后打开该文件,基本上我试图更新表中的一行,dbo.SX_Tom_Table,但是我得到了一个错误 UPDATE [SX_Tom_db].[dbo].[SX_Tom_Table] SET [AI_Field] = Dailylog2.dl_doc_fax FROM Dailylog2 WHERE CONVERT(varchar(10), Dailylog2.dl_dos, 101) = CONVERT(v

我从Superbase“Dailylog2”创建了一个SQL db文件,然后打开该文件,基本上我试图更新表中的一行,dbo.SX_Tom_Table,但是我得到了一个错误

UPDATE [SX_Tom_db].[dbo].[SX_Tom_Table] 
 SET [AI_Field] = Dailylog2.dl_doc_fax 
 FROM Dailylog2 
 WHERE 
   CONVERT(varchar(10), Dailylog2.dl_dos, 101) = CONVERT(varchar(10), 'May/20/2010', 101)   
   AND dl_chart = 912
 LIMIT 1
我得到一个错误:

Msg 102,15级,状态1,第7行“限制”附近语法不正确


如果我删除
限制1
,则它可以工作,但会更新所有行。我只想更新WHERE选择的行,以获得更准确的答案,您应该告诉我们问题范围内每个表的列

表格:[SX\u Tom\u db].[dbo].[SX\u Tom\u表格]

列:[AI_字段]

表格:[每日日志2]

列:dl\U dos、dl\U图表

表[SX_Tom_db].[dbo].[SX_Tom_table]中的列X必须与[Dailylog2]的列Y具有相同(不同…)的值

首先使用
SELECT
语句查看您的条件是否返回要更改的预期行

SELECT * FROM [SX_Tom_db].[dbo].[SX_Tom_Table] S
-- This inner join you should put the columns that must be equal in both table. 
INNER JOIN 
   [Dailylog2] D ON S.[?] = D.[?]
WHERE  
   CONVERT(varchar(10), D.dl_dos, 101) = CONVERT(varchar(10), 'May/20/2010', 101)   
   AND D.dl_chart = 912
如果上面的查询返回预期的行,则可以应用
更新

UPDATE 
   S
SET
   [AI_Field] = D.dl_doc_fax
FROM 
   [SX_Tom_db].[dbo].[SX_Tom_Table] S
-- This inner join you should put the columns that must be equal in both table. 
INNER JOIN 
   [Dailylog2] D ON S.[?] = D.[?]
WHERE  
    CONVERT(varchar(10), D.dl_dos, 101) = CONVERT(varchar(10), 'May/20/2010', 101)   
    AND D.dl_chart = 912

您使用的是哪种数据库管理系统?(该代码是特定于产品的。)您可以共享错误消息吗?如果您使用WHERE子句运行一个简单的SELECT*,您会得到要更新的特定行还是所有行?从Dailylog2 WHERE CONVERT(varchar(10),Dailylog2.dl_dos,101)=CONVERT(varchar(10),'May/20/2010',101)中选择*dl_chart=912工作正常,如果我使用这段代码,它会找到带有WHERE条件的3条记录:UPDATE[SX_Tom_db].[dbo].[SX_Tom_Table]SET[AI_Field]=dailyllog2.dl_doc_fax FROM Dailylog2 WHERE CONVERT(varchar(10),Dailylog2.dl_dos,101)=CONVERT(varchar(10),'May/20/2010',101)dl_chart=912 LIMIT 1I我收到错误消息:Msg 102,级别15,状态1,第7行“LIMIT”附近的语法不正确。嗨,弗拉维奥,很抱歉没有早点给你回复。到目前为止,我已经取得了一些进展。我现在一直在比较两个日期列字段。值为2019-06-15的sx_dos(date,null)和值为2011-07-05 00:00:00:000的Field_Ak(datetime,null)。虽然日期显示在不同表格的两列中,但我无法成功进行比较。我尝试过使用convert和cast,但没有成功。你能提供一些想法吗?我使用了以下代码,使用不同的数据类型和cast和convert.UPDATE[SX_Tom_db].[dbo].[SX_Tom_Table]SET[AI_Field]=dailyllog.SX_fax FROM dailyllog WHERE cast(dailyllog.SX_dos AS VARCHAR(10))=cast(AK_Field AS VARCHAR(10))我使用了不同的数据类型,但没有成功。这很难帮助您,因为我们不知道表[列]的结构:
[SX\u Tom\u db].[dbo].[SX\u Tom\u Table]
[dailyllog2]
。我们没有两个表的数据样本以及您想要的预期结果。很抱歉。以下是最后一个执行正常但未返回任何记录的代码。我知道在SX_Tom_表和Dailylog表中有相同值的日期。从[SX_Tom_db].[dbo].[SX_Tom_表]的内部联接[Dailylog]D ON S.[AC_字段]=D.[SX_图表]其中CONVERT(varchar(10),D.SX_dos,101)=CONVERT(varchar(10),S.AK_字段,101)