Join Field (Data Management)


Joins the contents of a table to another table based on a common attribute field. The input table is updated to contain the fields from the join table. You can select which fields from the join table will be added to the input table.

The records in the Input Table are matched to the records in the Join Table based on the values of Input Join Field and the Join Table Field parameters. Optionally, you can select specific fields from the Join Table to be appended to the Input Table during the join.


  • The Input Table can be a feature class (including shapefile) or a table.

  • All fields in the Input Table will be kept during the join. Optionally, you can select specific fields from the Join Table to be added to the output. These can be checked under the Transfer Fields parameter.

  • Records from the Join Table can be matched to more than one record in the Input Table.

  • If no fields are selected for the optional Transfer Fields parameter, all fields from the Join Table to the output will be joined.

  • Joins can be based on fields of type text, date, or number.

  • Joins based on text fields are case sensitive.

  • Fields of different number formats can be joined as long as the values are equal. For example, a field of type float can be joined to a short integer field.

  • The Input Join Field and the Join Table Field can have different names.

  • If a join field has the same name as a field from the input table, the joined field will be appended with _1 (or _2, or _3, and so on) to make it unique.

  • If values in the Join Table Field are not unique, only the first occurrence of each value will be used.

    • To account for join table values other than the first occurrence, start by executing the Summary Statistics tool using the Join Table as input. Summary Statistics allows you to summarize fields (for example, sum, mean, minimum).
    • To merge two or more fields in the join table before the join, first export the table or feature class using the Table To Table tool. Then merge them using the tool's field map.
  • The Validate Join tool can be used to validate a join between two layers or tables to determine if the layers or tables have valid field names and Object ID fields, if the join produces matching records, is a one-to-one or one-to-many join, and other properties of the join.

    A button to validate the join is available on this tool's dialog box for ease of use.


JoinField(in_data, in_field, join_table, join_field, {fields})
ParameterExplanationData Type

The table or feature class to which the join table will be joined.

Mosaic Layer; Raster Layer; Table View

The field in the input table on which the join will be based.


The table to be joined to the input table.

Mosaic Layer; Raster Layer; Table View

The field in the join table that contains the values on which the join will be based.


The fields from the join table to be transferred to the input table, based on a join between the input table and the join table.


Derived Output

NameExplanationData Type

The updated input dataset.

Table View; Raster Layer; Mosaic Layer

Code sample

JoinField example 1 (Python window)

The following Python window script demonstrates how to use the JoinField function in immediate mode.

import arcpy
arcpy.env.workspace = "C:/data/data.gdb"
arcpy.JoinField_management("zion_park", "zonecode", "zion_zoning", "zonecode", 
                           ["land_use", "land_cover"])
JoinField example 2 (stand-alone script)

This stand-alone Python script shows the JoinField function used to join a table to a feature class and only include two of the table's fields in the join.

# Purpose: Join two fields from a table to a feature class 

# Import system modules
import arcpy

# Set the current workspace 
arcpy.env.workspace = "c:/data/data.gdb"

# Set the local parameters
inFeatures = "zion_park"
joinField = "zonecode"
joinTable = "zion_zoning"
fieldList = ["land_use", "land_cover"]

# Join two feature classes by the zonecode field and only carry 
# over the land use and land cover fields
arcpy.JoinField_management(inFeatures, joinField, joinTable, joinField, 

Licensing information

  • Basic: Yes
  • Standard: Yes
  • Advanced: Yes

Related topics