text: Title: delete with join and returning clause doesn't work on SQLAlchemy 2
  Body: ### Describe the bug
  
  I have a statement like the following, which works on SQLAlchemy 1.4 but not on 2.0
  
  ```python
  delete(Author).where(Author.id == Book.author_id).returning(Book.title)
  ```
  
  ### Optional link from https://docs.sqlalchemy.org which documents the behavior that is expected
  
  https://docs.sqlalchemy.org/en/20/tutorial/data_update.html#using-returning-with-update-delete
  
  ### SQLAlchemy Version in Use
  
  2.0.36
  
  ### DBAPI (i.e. the database driver)
  
  psycopg2
  
  ### Database Vendor and Major Version
  
  PostgreSQL 12.20
  
  ### Python Version
  
  3.11
  
  ### Operating system
  
  macOS
  
  ### To Reproduce
  
  ```python
  from sqlalchemy import Column, ForeignKey, Integer, String, create_engine, delete, func
  from sqlalchemy.orm import declarative_base, relationship, sessionmaker
  
  Base = declarative_base()
  Session = sessionmaker(future=True)
  
  
  class Book(Base):
      __tablename__ = "books"
  
      id = Column(Integer, primary_key=True)
      title = Column(String, nullable=False)
      author_id = Column(
          Integer, ForeignKey("authors.id", ondelete="CASCADE"), nullable=False
      )
  
      author = relationship("Author", back_populates="books")
  
  
  class Author(Base):
      __tablename__ = "authors"
  
      id = Column(Integer, primary_key=True)
      name = Column(String, nullable=False)
  
      books = relationship(Book, back_populates="author")
  
  
  def main(engine):
      with Session.begin() as session:
          session.add(Book(title="Title", author=Author(name="Alice")))
  
      stmt = delete(Author).where(Author.id == Book.author_id).returning(Book.title)
  
      with engine.connect() as conn:
          assert conn.scalar(func.count(Author.id)) == 1
          check(
              conn.execute(stmt),
              "conn.execute()",
          )
  
      with Session() as session:
          assert session.scalar(func.count(Author.id)) == 1
          check(
              lambda: session.execute(stmt.execution_options(synchronize_session=False)),
              "session.execute(synchronize_session=False)",
          )
  
      with Session() as session:
          assert session.scalar(func.count(Author.id)) == 1
          check(
              lambda: session.execute(
                  stmt.execution_options(synchronize_session="fetch")
              ),
              "session.execute(synchronize_session='fetch')",
          )
  
  
  def check(result_or_fn, message):
      if callable(result_or_fn):
          try:
              result = result_or_fn()
          except Exception as exc:
              print(f"{message}: {type(exc).__name__}: {exc}")
              return
      else:
          result = result_or_fn
      expected = ["Title"]
      titles = result.scalars().all()
      if titles == expected:
          print(f"{message}: Got {expected} as expected")
      else:
          print(f"{message}: Expected {expected} but got {titles}")
  
  
  if __name__ == "__main__":
      engine = create_engine("postgresql:///issue12096", future=True)
      Session.configure(bind=engine)
      Base.metadata.create_all(engine)
      try:
          main(engine)
      finally:
          Base.metadata.drop_all(engine)
  ```
  
  
  ### Error
  
  SQLAlchemy 1.4 output:
  ```
  conn.execute(): Got ['Title'] as expected
  session.execute(synchronize_session=False): Got ['Title'] as expected
  session.execute(synchronize_session='fetch'): Expected ['Title'] but got []
  ```
  
  The 'fetch' case above emits `RETURNING books.title, authors.id` which looks like it should work but doesn't.
  
  
  SQLAlchemy 2.0 output:
  ```
  conn.execute(): Expected ['Title'] but got [1]
  session.execute(synchronize_session=False): NoSuchColumnError: Could not locate column in row for column 'books.title'
  session.execute(synchronize_session='fetch'): NoSuchColumnError: Could not locate column in row for column 'books.title'
  ```
  
  all three cases emit `RETURNING authors.id`...
  
  The full traceback for `session.execute`:
  
  ```
  Traceback (most recent call last):
    File ".venv/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py", line 844, in _index_for_key
      rec = self._keymap[key]
            ~~~~~~~~~~~~^^^^^
  KeyError: Column('title', String(), table=<books>, nullable=False)
  
  The above exception was the direct cause of the following exception:
  
  Traceback (most recent call last):
    File "issue12096.py", line 82, in <module>
      main(engine)
    File "issue12096.py", line 44, in main
      check(
    File "issue12096.py", line 62, in check
      result = result_or_fn()
               ^^^^^^^^^^^^^^
    File "issue12096.py", line 45, in <lambda>
      lambda: session.execute(stmt.execution_options(synchronize_session=False)),
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File ".venv/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
      return self._execute_internal(
             ^^^^^^^^^^^^^^^^^^^^^^^
    File ".venv/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2247, in _execute_internal
      result: Result[Any] = compile_state_cls.orm_execute_statement(
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File ".venv/lib/python3.11/site-packages/sqlalchemy/orm/bulk_persistence.py", line 2021, in orm_execute_statement
      return super().orm_execute_statement(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File ".venv/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 308, in orm_execute_statement
      return cls.orm_setup_cursor_result(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File ".venv/lib/python3.11/site-packages/sqlalchemy/orm/bulk_persistence.py", line 818, in orm_setup_cursor_result
      return cls._return_orm_returning(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File ".venv/lib/python3.11/site-packages/sqlalchemy/orm/bulk_persistence.py", line 629, in _return_orm_returning
      return loading.instances(result, querycontext)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File ".venv/lib/python3.11/site-packages/sqlalchemy/orm/loading.py", line 132, in instances
      with util.safe_reraise():
    File ".venv/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
      raise exc_value.with_traceback(exc_tb)
    File ".venv/lib/python3.11/site-packages/sqlalchemy/orm/loading.py", line 113, in instances
      *[
       ^
    File ".venv/lib/python3.11/site-packages/sqlalchemy/orm/loading.py", line 114, in <listcomp>
      query_entity.row_processor(context, cursor)
    File ".venv/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 3021, in row_processor
      getter = result._getter(column)
               ^^^^^^^^^^^^^^^^^^^^^^
    File ".venv/lib/python3.11/site-packages/sqlalchemy/engine/result.py", line 1173, in _getter
      return self._metadata._getter(key, raiseerr)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File ".venv/lib/python3.11/site-packages/sqlalchemy/engine/result.py", line 169, in _getter
      index = self._index_for_key(key, raiseerr)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File ".venv/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py", line 846, in _index_for_key
      x = self._key_fallback(key, ke, raiseerr)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File ".venv/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py", line 824, in _key_fallback
      raise exc.NoSuchColumnError(
  sqlalchemy.exc.NoSuchColumnError: Could not locate column in row for column 'books.title'
  ```
  
  ### Additional context
  
  mcve requires you to run `createdb issue12096` first.