我正在处理数据,这些数据在一个表中从第三方应用程序中提取并且所有数据都被转储。然后有表格,其中某些表格被抓取并在其他表格中使用。
涉及的两个表称为Projects和ALL_PROJECTS。 ALL_PROJECTS包含一个名为" Is_Ready"的列。它有二进制值。我希望在Projects中填充这些值,我在其中创建了一个名为" Is_Ready"的列。
Projects的唯一ID是由ProjectID列和TestID列组成的复合主键。 ALL_PROJECTS表只有ProjectID将它连接到Projects表(并且它不被称为ProjectID,它被称为ProjectCode)。
我的问题是,更新可以处理此问题还是需要加入?我想要" Is_Ready"的价值为每一行设置。可能有十几个具有一个ProjectID的TestID,但是如果" Is_Ready"例如,对于我想要的124480的ProjectID,设置为0" Is_Ready"在Project表中ProjectID为124480的每一行中设置为0。
我的第一直觉是尝试这样的事情
UPDATE Projects
SET Projects.Is_Ready = ALL_PROJECTS.Is_Ready
WHERE Projects.ProjectID = ALL_PROJECTS.ProjectCode;
然而,这似乎并没有起作用。我是否必须联系才能执行此操作,或者我只是在更新语句时出错?
更新:好的,所以我添加了FROM子句,但现在我只是受到了0行的影响。
答案 0 :(得分:0)
你错过了from子句:
UPDATE Projects
SET Projects.Is_Ready = ALL_PROJECTS.Is_Ready
FROM ALL_PROJECTS
WHERE Projects.ProjectID = ALL_PROJECTS.ProjectCode;
答案 1 :(得分:0)
您缺少更新语句的“FROM”部分。它应该是这样的:
UPDATE Projects
SET Projects.Is_Ready = ALL_PROJECTS.Is_Ready
FROM Projects, ALL_PROJECTS
WHERE Projects.ProjectID = ALL_PROJECTS.ProjectCode;