Por exemplo, eu tenho isso como um campo em uma coluna:
3,21,23,41,47,56,57,61,64,74,78,79,82,83,86,90,94
Esses são os IDs e estou tentando descobrir como posso pesquisar vários números que tentei, por exemplo:
SELECT * FROM table WHERE status="A" AND (FIND_IN_SET("3,64", myids))
Isso só parece funcionar se o 3 e o 64 estiverem juntos e a saída do find_in_set para cada valor puder ser um pouco dolorosa.
Quaisquer melhores soluções ou sugestões?
Respostas:
2 para resposta № 1FIND_IN_SET()
encontra apenas a posição do primeiro argumento (ver Referência do MySQL, Funções de String).
Você pode usar um único FIND_IN_SET
para cada ID que você está procurando:
SELECT * FROM table WHERE status="A" AND
FIND_IN_SET("3", myids) AND FIND_IN_SET("64", myids)
2 para resposta № 2
SELECT * FROM table WHERE status="A" AND myids in (3, 64)
Você pode tentar este.
1 para resposta № 3
Tabela SELECT * FROM WHERE myids REGEXP REPLACE ("3,64", ",", "(, | $) |");
-1 para resposta № 4
foreach($ids as $id)
{
SELECT * FROM table WHERE status="A" AND (FIND_IN_SET($id, myids))
}
that check one by one and getting the result from table.