Update Records from Another Table with an Access JOIN

An Access update query can copy values from a related table by joining the destination table to the source table. Preview the join as a SELECT query first, make a backup, and update only the columns that truly belong in the destination.

Last updated: September 26, 2026.

UPDATE Customers AS c
INNER JOIN CustomerImport AS i
    ON c.CustomerID = i.CustomerID
SET c.Email = i.Email,
    c.Phone = i.Phone
WHERE i.ImportBatchID = 42;

Access uses its joined UPDATE syntax rather than SQL Server’s UPDATE ... FROM form. The alias before each destination column makes the direction of the copy unambiguous.

Preview exactly what will change

Replace the UPDATE and SET clauses temporarily with a SELECT that shows the old and new values. Check for duplicate source keys: if CustomerImport contains several rows for one customer, Access may report that the operation must use an updateable query or may not produce the result you expect.

  1. Create a backup of the destination table or database.
  2. Run a SELECT using the same JOIN and WHERE clause.
  3. Confirm that the source key is unique for the chosen batch.
  4. Run the update and verify the affected records.

Handle missing and blank values deliberately

An INNER JOIN updates only matching rows. If a source value can be Null, decide whether Null should clear the destination. To preserve the old value, use SET c.Email = Nz(i.Email, c.Email). A zero-length string is not Null, so test it separately when blank imports should be ignored.

Do not join text and numeric fields, and do not wrap indexed join columns in conversion functions unless necessary. Matching data types allow Access to use indexes and avoid type-mismatch errors. Microsoft’s update-query guidance also recommends disabling the query only after you have reviewed the data that it will change.

When the query is not updateable

Totals queries, UNION queries, DISTINCT results, and some linked data sources are read-only. Save an aggregate or complex calculation into a temporary table, then join that table to the destination. If you need unmatched rows as well, review the difference between an Access INNER JOIN and LEFT JOIN.

Moving an Access application to the web?
See a practical path for replacing Access forms, queries, and reports with a browser-based database application. View the Access replacement guide.

Related Web Cheat Sheet guides

Sergey Kornilov

Sergey Kornilov