Skip to main content
Documents
Clauses StatementsKeywordsExpressionsFunctionsIndexesPerformance Optimization

MySQL JSON_MERGE_PATCH Expressions

The `JSON_MERGE_PATCH` expression in MySQL is used to merge two or more JSON documents, applying patches in a way that replaces the values of keys in the leftmost document with the values from the rightmost documents. It is particularly useful for updating parts of JSON data in a flexible manner.

Usage

The `JSON_MERGE_PATCH` expression is commonly used to update or modify existing JSON documents by merging them with additional JSON data. It is especially useful when you need to overwrite specific parts of a JSON document without affecting other parts.

JSON_MERGE_PATCH(json_doc1, json_doc2, ...)

In this syntax, `json_doc1`, `json_doc2`, etc., are JSON documents that will be merged. The result is a single JSON document where values from the rightmost documents replace those in the leftmost document if they share the same key.

Examples

1. Basic Merge

SELECT JSON_MERGE_PATCH('{"name": "John"}', '{"age": 30}');

This example merges two JSON documents, resulting in `{"name": "John", "age": 30}`.

2. Overwriting Values

SELECT JSON_MERGE_PATCH('{"name": "John", "age": 25}', '{"age": 30}');

Here, the `age` key in the first JSON document is updated to `30` from the second document, resulting in `{"name": "John", "age": 30}`.

3. Merging Arrays

SELECT JSON_MERGE_PATCH('{"name": "John", "hobbies": ["reading"]}', '{"hobbies": ["writing"]}');

This example shows that when merging arrays, `JSON_MERGE_PATCH` replaces the entire array, resulting in `{"name": "John", "hobbies": ["writing"]}`.

Tips and Best Practices

  • Use for partial updates. Leverage `JSON_MERGE_PATCH` to apply partial updates to JSON documents efficiently.
  • Order matters. Arrange JSON documents correctly; the rightmost document's values will overwrite those of the leftmost.
  • Validate JSON structures. Ensure all JSON documents involved are valid to prevent errors and unexpected results.
  • Consider array behavior. Remember that arrays are entirely replaced, not merged, which can affect data integrity.
  • Test on sample data first. Before applying changes to production data, test the expression with sample JSON to understand the impact.
  • Comparison with JSON_MERGE_PRESERVE. Use `JSON_MERGE_PATCH` when you need to replace arrays entirely. In contrast, `JSON_MERGE_PRESERVE` should be used when you intend to merge arrays without overwriting.
  • MySQL version compatibility. `JSON_MERGE_PATCH` is available from MySQL 8.0 onwards. Ensure your version supports it before implementation.

Consider performance implications when working with large JSON documents, as merging can be resource-intensive.

SQL Upskilling for Beginners

Gain the SQL skills to interact with and query your data.
Start Learning for Free