Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql access中的简单更新查询_Sql_Ms Access - Fatal编程技术网

Sql access中的简单更新查询

Sql access中的简单更新查询,sql,ms-access,Sql,Ms Access,这段代码是我在查询设计中输入条件得到的。 似乎只有当claim_status、state_Field和disease_category都是空(空)单元格时,才会运行此操作。我想运行一个查询,在Claim_Status下的空单元格中填充“UNKNOWN”,在State_field下的空单元格中填充“XX”,等等。条件不应该包括“AND”,这意味着它们基本上是分开运行的 有人能帮我吗 提前感谢。如果这三个字段都为空,则此查询只会更新索赔状态、状态和疾病类别。例如,假设状态_归档为空,但疾病_类别和索

这段代码是我在查询设计中输入条件得到的。 似乎只有当claim_status、state_Field和disease_category都是空(空)单元格时,才会运行此操作。我想运行一个查询,在Claim_Status下的空单元格中填充“UNKNOWN”,在State_field下的空单元格中填充“XX”,等等。条件不应该包括“AND”,这意味着它们基本上是分开运行的

有人能帮我吗


提前感谢。

如果这三个字段都
为空,则此查询只会更新
索赔状态
状态
疾病类别
。例如,假设
状态_归档
,但
疾病_类别
索赔状态
已填充数据。在这种情况下,您的更新不会更新
State\u field
,因为并非所有三列都是
NULL
。您应该使用三个单独的查询来确保更新所有
NULL
列,而不管是否填充了其他两列:

UPDATE _DATA SET 
[_DATA].Claim_Status = "UNKNOWN", 
[_DATA].State_Filed = "XX", 
[_DATA].Disease_Category = "UNKNOWN"
WHERE 
((([_DATA].Claim_Status) Is Null) AND 
(([_DATA].State_Filed) Is Null) AND 
(([_DATA].Disease_Category) Is Null));
此外,我个人不会更新
NULL
字段以包含数据。如果没有这些列的数据,则没有这些数据。例如,如果您希望
NULL
状态显示为
XX
而不是
NULL
,则执行此操作的位置是在您的表示层或报告中,您可以注销此数据,而不是数据库本身。

您可以使用Nz:

UPDATE _DATA
SET Claim_Status = 'UNKNOWN' 
WHERE Claim_Status IS NULL

UPDATE _DATA
SET State_Filed = 'XX' 
WHERE State_Filed IS NULL

UPDATE _DATA
SET Disease_Category = 'UNKNOWN' 
WHERE Disease_Category IS NULL

考虑3个简单的查询---每个要更新的字段之一。以下是第一个问题:
UPDATE\u数据集Claim\u Status=“UNKNOWN”其中Claim\u Status为空
这是否意味着我必须进行3次查询才能进行此更改?感谢您的输入。有没有可能在一个更新查询中使用那一大块行,这样它就可以同时执行所有操作?我不这么认为,每个
update
都是一个单独的事务,必须自己运行。有关冗长的解决方法,请参见此:。现在,如果值
NULL
为空,则可以使用case语句将其更新为默认值;如果值不是空,则可以将其设置回自身,但这将涉及数据库中每一行的每一列。我真的不建议这样做。只有当状态、状态和疾病都为空时,才会更改值吗?那么您将使用and,而不是OR。
UPDATE 
    _DATA 
SET 
    Claim_Status = Nz(Claim_Status, "UNKNOWN"), 
    State_Filed = Nz(State_Filed, "XX"), 
    Disease_Category = Nz(Disease_Category, "UNKNOWN")
WHERE 
    Claim_Status Is Null 
    OR 
    State_Filed Is Null 
    OR 
    Disease_Category Is Null;