为什么在MS Access中运行更新查询时要求输入“输入参数值”?

时间:2018-10-29 18:26:24

标签: sql ms-access join sql-update subquery

我一直在努力查询,不知道这是怎么回事。我不是高级SQL用户,但是对SQL有一定了解。

我有两个表,我试图用另一个表中的字段更新一个字段。它们在每个字段中都没有唯一的标识符,因此需要与三个字段(HoleID,From,To)匹配,尤其是因为表LEAPFROG_Lithology的记录与Lithology表中的From / To相比没有相同。< / p>

我一直在寻找关于相似主题的问题,并尝试了不同的查询变体,但是没有任何效果,它总是要求我“输入参数值”。 我尝试使用像oneone这样的内关节,但是没有用。

这是我尝试过的:

版本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  ;

我到处都尝试过[],但没有尝试。没关系。

有人可以告诉我我在做什么错吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

在使用JOIN之前,请确保两个表都可以形成关系,您需要确保一个表中的PRIMARY KEY对应于另一个表中的FOREIGN KEY才能将它们联接。

访问使您可以使用设计视图来创建查询,如果您不懂SQL的话,这很容易。可视化设计后,您可以切换到SQL视图以找到代码。

enter image description here enter image description here

答案 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;