首页 > 解决方案 > 基于同一个表更新 MS Access 表空字段

问题描述

在 MS Access 数据库中,我正在使用一个包含行的表。在某些情况下,并非所有行的列都被填充。我想创建一个更新查询,以使用该列不为空的其他行的数据更新空字段的值。

谷歌搜索了这个问题,但没有找到令人满意的答案。有人可以告诉我应该如何构建查询吗?

当前表看起来像

| Invoicenumber | Customer | Date    |
|---------------|----------|---------|
| 5             | 12       | 12-6-19 |
| 5             |          | 12-6-19 |
| 5             |          | 12-6-19 |
| 5             |          | 12-6-19 |
| 6             | 18       | 15-6-19 |
| 6             |          | 15-6-19 |
| 6             |          | 15-6-19 |
| 7             | 20       | 20-6-19 |
| 7             |          | 20-6-19 |

更新后我需要表格如下所示:

| Invoicenumber | Customer | Date    |
|---------------|----------|---------|
| 5             | 12       | 12-6-19 |
| 5             | 12       | 12-6-19 |
| 5             | 12       | 12-6-19 |
| 5             | 12       | 12-6-19 |
| 6             | 18       | 15-6-19 |
| 6             | 18       | 15-6-19 |
| 6             | 18       | 15-6-19 |
| 7             | 20       | 20-6-19 |
| 7             | 20       | 20-6-19 |

标签: ms-accesssql-updateis-empty

解决方案


您可以通过将表连接到自身来使用 SQL 来完成:

UPDATE 
    Invoices 
    INNER JOIN Invoices AS Inv2
    ON Invoices.InvoiceNumber = Inv2.InvoiceNumber
SET
    Invoices.Customer = Inv2.Customer
WHERE 
    (Invoices.[Customer] Is Null)
    AND (Inv2.Customer IS NOT NULL)

推荐阅读