PostgreSQL not SELECTing by RETURNING value of INSERT

I have a query that’s supposed to insert a new row, then return it. Normally a RETURNING would suffice, but there’s a lot of other JOINed data must be added, so a SELECT seems to be necessary after the INSERT.

In this simplified example id is a SERIAL:

WITH new_row AS (
  INSERT INTO my_table (
    some_row,
    some_other_row
  ) VALUES (
    0,
    'whatever'
  ) RETURNING id
)

SELECT
   my_table.*,
   other_table.*
FROM my_table
LEFT JOIN other_table ON other_table.somekey = my_table.id

WHERE my_table.id = (SELECT id FROM new_row)

The result is an empty set. Apparently WHERE doesn’t work.

If I just do this:

WITH new_row AS (
  INSERT INTO my_table (
    some_row,
    some_other_row
  ) VALUES (
    0,
    'whatever'
  ) RETURNING id
)

SELECT id FROM new_row;

then I get the value of id correctly.

Why doesn’t it work in the WHERE condition?