Cruzar con IN un campo con una cadena de IDs separados por comas en una consulta SQL

Puede por alguna razón tu tabla contenga un campo separados por comas, en mi caso se debía a que iba a usar esa cadena con un motor de busqueda distinto al mysql, un sphinx con lo que me venía muy tener esta información precalculada y almacenada en mi mysql y luego simplemente sacarla y usarla para el sphinx.

En principio esto como solución para SQL no es un buen diseño, es mejor, tener una tabla con n registros y un identificados una relacion 1:n, y simplemente cruzar con un inner join, pero... este no es el caso.

Así que nada me encontre con la necesidad de aprovechar esta información


Posibles soluciones teniendo en cuenta que el campo fk_ids_poblaciones_cercanas es una cadena separada por comas con todas las poblaciones cercadas a una dada

Contiene algo así

419,444,787,1539,1824,1839,1924,2010,5400,5805


Esto no funciona:

tbl_apartamentos_cache.fk_id_tbl_poblaciones  in (tbl_poblaciones_cercanas.fk_ids_poblaciones_cercanas)

Esto si funciona:

FIND_IN_SET(tbl_apartamentos_cache.fk_id_tbl_poblaciones, tbl_poblaciones_cercanas.fk_ids_poblaciones_cercanas) > 0



Espero que os haya ayudado

Comentarios