No desea almacenar el valor en forma separada por comas.
Considere el caso cuando decida unir esta columna con alguna otra tabla.
Considere que tiene,
x items
1 1, 2, 3
1 1, 4
2 1
y desea encontrar valores distintos para cada x, es decir:
x items
1 1, 2, 3, 4
2 1
o puede querer verificar si tiene 3
o puede querer convertirlos en filas separadas:
x items
1 1
1 2
1 3
1 1
1 4
2 1
Será un ENORME DOLOR.
Use al menos el primer principio de normalización:tenga una fila separada para cada valor.
Ahora, digamos que originalmente tenías esto como mesa:
x item
1 1
1 2
1 3
1 1
1 4
2 1
Puede convertirlo fácilmente en valores csv:
select x, group_concat(item order by item) items
from t
group by x
Si desea buscar si x =1 tiene el elemento 3. Fácil.
select * from t where x = 1 and item = 3
que en el caso anterior usaría horrible find_in_set
:
select * from t where x = 1 and find_in_set(3, items);
Si cree que puede usar Me gusta con valores CSV para buscar, primero like %x%
no puede usar índices. En segundo lugar, producirá resultados incorrectos.
Digamos que desea verificar si el elemento ab está presente y lo hace %ab%
devolverá filas con abc abcd abcde .... .
Si tiene muchos usuarios y elementos, le sugiero que cree una tabla separada users
con un ID de usuario PK, otro items
con PK itemid y, por último, una tabla de mapeo user_item
tener columnas ID de usuario, ID de elemento.
Si sabe que solo necesitará almacenar y recuperar estos valores y no realizar ninguna operación en ellos, como unir, buscar, diferenciar, convertir a filas separadas, etc. 't).