diff --git a/changelog/entries/unreleased/feature/2267_select_multiple_relationships_row_select_modal_link_row.json b/changelog/entries/unreleased/feature/2267_select_multiple_relationships_row_select_modal_link_row.json
new file mode 100644
index 000000000..4b2131ae6
--- /dev/null
+++ b/changelog/entries/unreleased/feature/2267_select_multiple_relationships_row_select_modal_link_row.json
@@ -0,0 +1,7 @@
+{
+  "type": "feature",
+  "message": "Allow selecting multiple relationships in the row select modal of the link row field.",
+  "issue_number": 2267,
+  "bullet_points": [],
+  "created_at": "2024-07-17"
+}
diff --git a/web-frontend/modules/core/assets/scss/components/views/grid/simple_grid.scss b/web-frontend/modules/core/assets/scss/components/views/grid/simple_grid.scss
index ee8b67e6f..d8b036138 100644
--- a/web-frontend/modules/core/assets/scss/components/views/grid/simple_grid.scss
+++ b/web-frontend/modules/core/assets/scss/components/views/grid/simple_grid.scss
@@ -72,6 +72,20 @@
   &.simple-grid__cell--single {
     width: 100%;
   }
+
+  &.simple-grid__cell--with-checkbox {
+    width: 64px;
+    padding-right: 22px;
+  }
+}
+
+.simple-grid__cell-checkbox {
+  @include absolute(0, 0, 0, 0);
+
+  display: flex;
+  vertical-align: center;
+  justify-content: center;
+  background-color: inherit;
 }
 
 .simple-grid__row--hover {
@@ -83,7 +97,7 @@
   }
 }
 
-.simple-grid__row--selected {
+.simple-grid__row--disabled {
   cursor: initial;
 
   .simple-grid__cell,
@@ -92,6 +106,13 @@
   }
 }
 
+.simple-grid__row--checked {
+  .simple-grid__cell,
+  .grid-view__cell {
+    background-color: $color-primary-100;
+  }
+}
+
 .simple-grid__add-row {
   display: block;
   line-height: 33px;
diff --git a/web-frontend/modules/database/components/row/RowEditFieldLinkRow.vue b/web-frontend/modules/database/components/row/RowEditFieldLinkRow.vue
index 1e52fcc98..aeab61ae3 100644
--- a/web-frontend/modules/database/components/row/RowEditFieldLinkRow.vue
+++ b/web-frontend/modules/database/components/row/RowEditFieldLinkRow.vue
@@ -39,7 +39,9 @@
       :table-id="field.link_row_table_id"
       :view-id="field.link_row_limit_selection_view_id"
       :value="value"
+      :multiple="true"
       @selected="addValue(value, $event)"
+      @unselected="removeValue({}, value, $event.row.id)"
     ></SelectRowModal>
     <ForeignRowEditModal
       v-if="!readOnly || isInForeignRowEditModal"
diff --git a/web-frontend/modules/database/components/row/SelectRowContent.vue b/web-frontend/modules/database/components/row/SelectRowContent.vue
index 21ee9000c..2ce33cfad 100644
--- a/web-frontend/modules/database/components/row/SelectRowContent.vue
+++ b/web-frontend/modules/database/components/row/SelectRowContent.vue
@@ -28,6 +28,7 @@
         :with-footer="true"
         :show-hovered-row="true"
         :selected-rows="selectedRows"
+        :multiple="multiple"
         :show-row-id="true"
         @add-row="$refs.rowCreateModal.show()"
         @row-click="select($event)"
@@ -99,6 +100,11 @@ export default {
       required: false,
       default: '',
     },
+    multiple: {
+      type: Boolean,
+      required: false,
+      default: false,
+    },
   },
   data() {
     return {
@@ -296,11 +302,14 @@ export default {
      * Called when the user selects a row.
      */
     select(row) {
-      if (this.selectedRows.includes(row.id)) {
+      const exists = this.selectedRows.includes(row.id)
+
+      // In multiple mode it's also possible to unselect.
+      if (!this.multiple && exists) {
         return
       }
 
-      this.$emit('selected', {
+      this.$emit(exists ? 'unselected' : 'selected', {
         row,
         primary: this.primary,
         fields: this.fields,
diff --git a/web-frontend/modules/database/components/row/SelectRowModal.vue b/web-frontend/modules/database/components/row/SelectRowModal.vue
index fa8e48a50..5633331c4 100644
--- a/web-frontend/modules/database/components/row/SelectRowModal.vue
+++ b/web-frontend/modules/database/components/row/SelectRowModal.vue
@@ -10,7 +10,9 @@
       :table-id="tableId"
       :view-id="viewId"
       :value="value"
+      :multiple="multiple"
       @selected="selected"
+      @unselected="unselected"
       @hide="hide"
     ></SelectRowContent>
   </Modal>
@@ -40,15 +42,26 @@ export default {
       required: false,
       default: () => [],
     },
+    multiple: {
+      type: Boolean,
+      required: false,
+      default: false,
+    },
   },
   methods: {
     /**
      * Hide the modal when a row has been selected.
      */
     selected(...args) {
-      this.hide()
+      if (!this.multiple) {
+        this.hide()
+      }
       this.$emit('selected', ...args)
     },
+    unselected(...args) {
+      console.log('unselected')
+      this.$emit('unselected', ...args)
+    },
   },
 }
 </script>
diff --git a/web-frontend/modules/database/components/view/grid/SimpleGrid.vue b/web-frontend/modules/database/components/view/grid/SimpleGrid.vue
index 9bebe80b3..7ae0d4279 100644
--- a/web-frontend/modules/database/components/view/grid/SimpleGrid.vue
+++ b/web-frontend/modules/database/components/view/grid/SimpleGrid.vue
@@ -38,7 +38,10 @@
           :class="{
             'simple-grid__row--hover':
               showHoveredRow && currentHoveredRow === row.id,
-            'simple-grid__row--selected': selectedRows.includes(row.id),
+            'simple-grid__row--disabled':
+              !multiple && selectedRows.includes(row.id),
+            'simple-grid__row--checked':
+              multiple && selectedRows.includes(row.id),
           }"
           @click="$emit('row-click', row)"
           @mouseover="currentHoveredRow = row.id"
@@ -49,6 +52,15 @@
             class="simple-grid__cell simple-grid__cell--first"
           >
             {{ row.id }}
+            <div
+              v-if="multiple"
+              v-show="
+                currentHoveredRow === row.id || selectedRows.includes(row.id)
+              "
+              class="simple-grid__cell-checkbox"
+            >
+              <Checkbox :checked="selectedRows.includes(row.id)"></Checkbox>
+            </div>
           </div>
           <div
             v-for="field in fixedFields"
@@ -61,7 +73,9 @@
         <div
           v-if="canAddRow"
           class="simple-grid__row"
-          :class="{ 'simple-grid__row--hover': showHoveredRow && addRowHover }"
+          :class="{
+            'simple-grid__row--hover': showHoveredRow && addRowHover,
+          }"
           @mouseover="addRowHover = true"
           @mouseleave="addRowHover = false"
           @click="$emit('add-row')"
@@ -106,7 +120,10 @@
               :class="{
                 'simple-grid__row--hover':
                   showHoveredRow && currentHoveredRow === row.id,
-                'simple-grid__row--selected': selectedRows.includes(row.id),
+                'simple-grid__row--disabled':
+                  !multiple && selectedRows.includes(row.id),
+                'simple-grid__row--checked':
+                  multiple && selectedRows.includes(row.id),
               }"
               @click="$emit('row-click', row)"
               @mouseover="currentHoveredRow = row.id"
@@ -195,6 +212,11 @@ export default {
       required: false,
       default: false,
     },
+    multiple: {
+      type: Boolean,
+      required: false,
+      default: false,
+    },
   },
   data() {
     return { addRowHover: false, currentHoveredRow: null }
diff --git a/web-frontend/modules/database/components/view/grid/fields/GridViewFieldLinkRow.vue b/web-frontend/modules/database/components/view/grid/fields/GridViewFieldLinkRow.vue
index 5e7a4a6d6..ed53cfcdb 100644
--- a/web-frontend/modules/database/components/view/grid/fields/GridViewFieldLinkRow.vue
+++ b/web-frontend/modules/database/components/view/grid/fields/GridViewFieldLinkRow.vue
@@ -46,7 +46,9 @@
       :table-id="field.link_row_table_id"
       :view-id="field.link_row_limit_selection_view_id"
       :value="value"
+      :multiple="true"
       @selected="addValue(value, $event)"
+      @unselected="removeValue({}, value, $event.row.id)"
       @hidden="hideModal"
     ></SelectRowModal>
     <ForeignRowEditModal