首页 文章

查询结果的SQL Update查询

提问于
浏览
2

我有2个表,如:

表格1

SID     Sdefinition   CValue
4057    s1             32
4058    s2             
4059    s3             6
4060    s4

Mapping_tbl

SID     SINID   ECFID   SID-SINID
4057    1099    4027e   1099_4057
4058    1099    4027e   1099_4058
4059    1121    4003e   1121_4059
4060    1121    4003e   1121_4060

查询1

SELECT Mapping_tbl.SID, Table1.Sdefinition, Table1.CValue
  FROM Table1 INNER JOIN Mapping_tbl ON Table1.SID= Mapping_tbl.SID;

查询1(结果)

SID  Sdefinition CValue
   4057    s1      32
   4058    s2      
   4059    s3      6
   4060    s4

我有一种情况,我想更新查询表(Query1),即如果它包含null,则将字段(Cvalue)设置为0 . 我正在使用更新查询

Update Query1 Set CValue = 0 Where CValue Is Null;

查询表(query1)得到更新,如果它包含空值,则将Cvalue设置为0,并且它还更新(设置0)Table1,其中Cvalues为null .

如何避免更新Table1?有什么建议 .

1 回答

  • 2

    您似乎不想更改存储在表中的值,并且您希望查询在CValue为空时显示为零 . 因此,您只能在其结果集中将查询替换为零Null(不更改表中的值)...

    SELECT m.SID, t.Sdefinition, IIf(t.CValue Is Null, 0, t.CValue) AS [CValue]
    FROM Table1 AS t INNER JOIN Mapping_tbl AS m
    ON t.SID= m.SID;
    

    对于Access会话中的查询,您可以使用VBA Nz() 函数...

    SELECT m.SID, t.Sdefinition, Nz(t.CValue Is Null, 0) AS [CValue]
    FROM Table1 AS t INNER JOIN Mapping_tbl AS m
    ON t.SID= m.SID;
    

    我使用别名作为表名 . 但你不需要它们来进行Null替换 . 我只是喜欢别名 .

相关问题