我一直在努力查询,不知道这是怎么回事。我不是高级SQL用户,但是对SQL有一定了解。
我有两个表,我试图用另一个表中的字段更新一个字段。它们在每个字段中都没有唯一的标识符,因此需要与三个字段(HoleID,From,To)匹配,尤其是因为表LEAPFROG_Lithology的记录与Lithology表中的From / To相比没有相同。< / p>
我一直在寻找关于相似主题的问题,并尝试了不同的查询变体,但是没有任何效果,它总是要求我“输入参数值”。 我尝试使用像one和one这样的内关节,但是没有用。
这是我尝试过的:
版本1
Update LEAPFROG_Lithology
SET LEAPFROG_Lithology.Primary_litho = (
SELECT Lithology.Primary_litho
FROM Lithology
RIGHT JOIN LEAPFROG_Lithology ON (
Lithology.[HoleID] = LEAPFROG_Lithology.[HoleID] and
Lithology.[From_m] = LEAPFROG_Lithology.[From_m] and
Lithology.[To_m] = LEAPFROG_Lithology.[To_m]))
Where LEAPFROG_Lithology.Primary_litho is null ;
版本2 (也尝试了INNER JOIN)
Update LEAPFROG_Lithology
LEFT JOIN Lithology ON (
LEAPFROG_Lithology.[HoleID] = Lithology.[HoleID] and
LEAPFROG_Lithology.[From_m] = Lithology.[From_m] and
LEAPFROG_Lithology.[To_m] = Lithology.[To_m])
SET LEAPFROG_Lithology.Primary_litho = Lithology.Primary_litho
Where LEAPFROG_Lithology.Primary_litho is null ;
我到处都尝试过[],但没有尝试。没关系。
有人可以告诉我我在做什么错吗? 谢谢!
答案 0 :(得分:0)
在使用JOIN之前,请确保两个表都可以形成关系,您需要确保一个表中的PRIMARY KEY对应于另一个表中的FOREIGN KEY才能将它们联接。
访问使您可以使用设计视图来创建查询,如果您不懂SQL的话,这很容易。可视化设计后,您可以切换到SQL视图以找到代码。
答案 1 :(得分:0)
请验证表和字段的名称正确。如果是这样,第二个查询应该可以工作。
但是我建议使用稍微不同的括号,以便您可以显示查询的图形设计视图。另外,也不需要使用LEFT JOIN,因为对于没有Primary_litho且没有匹配的Lithology的记录,NULL值将被更新为NULL值。因此,这应该可以正常工作:
UPDATE LEAPFROG_Lithology
INNER JOIN Lithology ON
(LEAPFROG_Lithology.[HoleID] = Lithology.[HoleID]) AND
(LEAPFROG_Lithology.[From_m] = Lithology.[From_m]) AND
(LEAPFROG_Lithology.[To_m] = Lithology.[To_m])
SET LEAPFROG_Lithology.Primary_litho = Lithology.Primary_litho
WHERE LEAPFROG_Lithology.Primary_litho Is Null;