If it's of any help I find a lot of my audit reports return too many rows due to NULL fields. I prefer to include a temporary "or nodes.dns is not null" so that I can focus clean up on those that are present AND not matching.
Once the clean up is done and the query returns no rows then I remove the NULL clause and start with the next round of finding the nodes that don't have a DNS entry at all.