更新和限制的语法不正确

时间:2019-06-14 12:37:11

标签: sql-server tsql sql-update

我从Superbase创建了一个SQL db文件“ Dailylog2”,然后打开FILE,基本上我正在尝试更新表dbo.SX_Tom_Table中的ROW,但是我遇到了错误。

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

我得到了错误:

  

信息102,级别15,状态1,第7行在“ LIMIT”附近的语法不正确。

如果我删除了LIMIT 1,那么它可以工作,但是会更新所有行。我只想更新WHERE选择的行

1 个答案:

答案 0 :(得分:0)

要获得更准确的答案,您应该告诉我们问题范围内每个表的列。

表格:[SX_Tom_db]。[dbo]。[SX_Tom_Table]

  

列:[AI_Field],?

表格:[Dailylog2]

  

列:dl_dos,dl_chart

[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

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