usa tutorial sirve que para instalar index funciona elastic crear como comandos mysql sql in-clause

tutorial - Formato variable de MySQL para una lista de valores "NO EN"



para que sirve elastic search (3)

Al usar CONCAT() , un separador de tubos (en lugar de una coma) y un poco de "lógica inversa", puede usar una variable en su lista NOT IN , pero en su lugar, ¡utilizando NOT LIKE !

Ejemplo:

SET @idcamposexcluidos = ''|817|803|495|''; SELECT * FROM your_table WHERE @idcamposexcluidos NOT LIKE CONCAT(''%|'', id_campo, ''|%'');

Esto debería funcionar tanto con cadenas como con columnas numéricas.

Enloqueciéndome tratando de establecer una variable en una consulta de tipo:

SET @idcamposexcluidos=''817,803,495'';

entonces puedo usarlo en una

WHERE id_campo not in (@idcamposexcluidos)

Intenté definir la variable en diferentes formatos sin suerte y no parece encontrar un ejemplo específico para lo anterior:

SET @idcamposexcluidos=''(817,803,495)''; ... WHERE id_campo not in @idcamposexcluidos SET @idcamposexcluidos=817,803,495;

sin éxito Devuelve un error o ignora los valores.


No puedes usar la cláusula IN así. Compila una sola cadena en su cláusula IN . Pero una cláusula IN necesita valores separados .

WHERE id_campo not in (@idcamposexcluidos)

compila a

WHERE id_campo not in (''817,803,495'')

pero debería ser

WHERE id_campo not in (''817'',''803'',''495'')

Para superar esto, utilice SQL dinámico o en MySQL, puede usar FIND_IN_SET :

SET @idcamposexcluidos=''817,803,495''; ... WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0

pero usar una función como FIND_IN_SET() no puede hacer uso de índices.


si usa mysql> 5.1, puede usar:

CREATE TYPE lista as ( clave int4, valor int4 ); CREATE OR REPLACE FUNCTION test(IN vArray lista[]) ... WHERE FIND_IN_SET(id_campo, vArray) ...

en otro caso puedes usar un truco:

WHERE id_campo IN ( SELECT 817 as valor UNION ALL SELECT 803 as valor UNION ALL SELECT 495 as valor)