Domanda

I have two tables:

Table tablefoo contains a column fulldata.
Table tablebar contains a column partialdata.

I want find a list of tablefoo.fulldata that do NOT have partial matches in tablebar.partialdata.

The following provides a list of tablefoo.fulldata with partial matches in tablebar, but I want the negative of this.

select fulldata from tablefoo
where fulldata like any (select '%' || partialdata from tablebar); 

This lists every record in partialdata:

select fulldata from tablefoow
where partialdata not in (select '%' || partialdata from tablebar);

Any idea how to get only the results tablefoo.fulldata that do not contain matches to a leading wildcarded tablebar.partialdata?

I found this link: PostgreSQL 'NOT IN' and subquery which seems like it's headed down the right path, but I'm not getting it to work with the wildcard.

Sure, I could write a script to pull this out of psql and do the comparisons, but it would be much nicer to handle this all as part of the query.

È stato utile?

Soluzione

SELECT fulldata
FROM   tablefoo f
WHERE  NOT EXISTS (
   SELECT 1
   FROM   tablebar b
   WHERE  f.fulldata LIKE ('%' || b.partialdata)
   );
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top