diff --git a/tests/update/tests.py b/tests/update/tests.py
index abf4db11d9..e16084d896 100644
--- a/tests/update/tests.py
+++ b/tests/update/tests.py
@@ -1,9 +1,10 @@
 from django.core.exceptions import FieldError
 from django.db.models import Count, F, Max
+from django.db.models.expressions import OuterRef, Subquery
 from django.db.models.functions import Concat, Lower
 from django.test import TestCase
 
-from .models import A, B, Bar, D, DataPoint, Foo, RelatedPoint
+from .models import A, B, Bar, C, D, DataPoint, Foo, RelatedPoint
 
 
 class SimpleTest(TestCase):
@@ -199,3 +200,23 @@ class AdvancedTests(TestCase):
             with self.subTest(annotation=annotation):
                 with self.assertRaisesMessage(FieldError, msg):
                     RelatedPoint.objects.annotate(new_name=annotation).update(name=F('new_name'))
+
+    def test_update_with_joined_field_outerref(self):
+        a1 = A.objects.create(x=1)
+        a2 = A.objects.create(x=3)
+        a3 = A.objects.create(x=5)
+        B.objects.bulk_create([
+            B(a=a1, y=1),
+            B(a=a2, y=3),
+            B(a=a3, y=4),
+        ])
+        C.objects.bulk_create([
+            C(y=5),
+            C(y=10),
+            C(y=15),
+        ])
+        qs = C.objects.filter(y=OuterRef('a__x'))
+        B.objects.filter(
+            y__gt=3
+        ).update(y=Subquery(qs.values('y')[:1]))
+        self.assertEqual(list(B.objects.filter(y__gt=3).values_list('y', flat=True)), [5])
