Fetch all rows and leave column value empty if no equality match
I want all 200 rows between 400 and 600 regardless of if the value in the second table column exists

So given two joined tables, &quot;left&quot; and &quot;right&quot;, you want to include every row from the &quot;left&quot; table and matching rows in the &quot;right&quot; table if they happen to be there?
That's called a Left [Outer] Join.
You'll have to use explicit join syntax, not the &quot;comma&quot; form that you currently have, because that always does an &quot;inner&quot; join, requiring matching values in both tables.
Try something like this:
SELECT 
  h.*                   &lt;-- Personally, I'd avoid this and state every column name explicitly
, k.customer_id
FROM events h 
LEFT JOIN customers k
     ON h.ident = k.id 
WHERE h.eventid BETWEEN 400 and 600
ORDER BY h.eventid 
;