I use mySQL and I have a members table with a BLOB ‘contacts’ field containing a comma separated list of other member’s IDs:
TABLE members:
id_member = 1
firstname = 'John'
contacts (BLOB) = '4,6,7,2,5'
I want to retrieve all the first names in the ‘contacts’ list of an individual, with a single query. I tried the following:
SELECT firstname from members WHERE id_member IN ( SELECT contacts FROM members WHERE id_member = 1 );
It returns only one row, but when I try:
SELECT firstname from members WHERE id_member IN ( 4,6,7,2,5 );
It returns all the first names from the list. I can use two queries to achieve this, but I thought I’d double check if there’s a way to make it work with one simple, elegant query.
Thanks for reading, any help appreciated.
Jul
Can you change this DB structure? The contacts field really should be a related table rather than a column. Assuming a contacts table with this structure:
Then you would use EXISTS instead: