找不到多部分标识符

时间:2016-02-16 16:27:21

标签: sql sql-server

我这里有一个sql代码。我试图离开连接两个表,如果没有匹配,我想更改第一个表的状态代码进行更改。

Update pbmsys.dbo.mhj_tmp_list 
SET 
    a.status_cd = 'I'
FROM 
   pbmsys.dbo.mhj_tmp_list a 
LEFT JOIN 
    staging.dbo.delity_List1 b
ON 
  a.drug_id = b.drug_id 
where 
   a.mac_id = 154 and b.drug_id is null 

我收到错误

  

"多部分标识符" a.status_cd"无法受约束。"

列在表格中。我该如何解决?我正在为我想要实现的目标编写错误的代码吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

你有:

Update pbmsys.dbo.mhj_tmp_list 
SET 
    a.status_cd = 'I'
FROM 
   pbmsys.dbo.mhj_tmp_list a 
LEFT JOIN 
    staging.dbo.delity_List1 b
ON 
  a.drug_id = b.drug_id 
where 
   a.mac_id = 154 and b.drug_id is null 

你应该:

Update a --<-- this is the alias of the table pbmsys.dbo.mhj_tmp_list
SET 
    a.status_cd = 'I'
FROM 
   pbmsys.dbo.mhj_tmp_list a --<-- this is the alias of the table pbmsys.dbo.mhj_tmp_list
LEFT JOIN 
    staging.dbo.delity_List1 b
ON 
  a.drug_id = b.drug_id 
where 
   a.mac_id = 154 and b.drug_id is null 

错误的原因是您已在pbmsys.dbo.mhj_tmp_list的{​​{1}}部分中为a表提供了FROM,而您要更新的列是{{ 1}}但是在UPDATE部分中您有a.status_cd而不是别名UPDATE