with strip_tags remove quitar para funcion etiquetas ejemplo php mysql sql-order-by in-function

php - remove - strip_tags wordpress



ORDEN DE MySQL POR EN() (4)

Tengo una matriz de PHP con números de ID en él. Estos números ya están ordenados.

Ahora me gustaría obtener mi resultado a través del método IN (), para obtener todas las ID.

Sin embargo, estas identificaciones deben ordenarse como en el método IN.

Por ejemplo:

IN(4,7,3,8,9)

Debería dar un resultado como:

4 - Article 4 7 - Article 7 3 - Article 3 8 - Article 8 9 - Article 9

¿Alguna sugerencia? Tal vez hay una función para hacer esto?

¡Gracias!


Creo que puede estar buscando la función FIELD - aunque normalmente se la considera una función de cadena, ¡también funciona bien para los números!

ORDER BY FIELD(field_name, 3,2,5,7,8,1)


El SQL estándar no proporciona una forma de hacer esto (MySQL puede, pero prefiero las soluciones que no tienen que ver con el proveedor, por lo que puedo cambiar el DBMS en cualquier momento).

Esto es algo que debe hacer en el procesamiento posterior una vez que se devuelve el conjunto de resultados. SQL solo puede devolverlos en el orden especificado en la cláusula "ordenar por" (o en cualquier orden si no existe tal cláusula).

La otra posibilidad (aunque no me gusta, tengo el honor de darte la opción) es hacer varios viajes a la base de datos, uno para cada ID, y procesarlos a medida que entran:

select * from tbl where article_id = 4; // Process those. select * from tbl where article_id = 7; // Process those. : : : : : select * from tbl where article_id = 9; // Process those.


Podrías usar FIELD() :

ORDER BY FIELD(id, 3,2,5,7,8,1)

Devuelve el índice (posición) de str en la lista str1, str2, str3, ... Devuelve 0 si no se encuentra str.

Sin embargo, es una especie de truco feo, así que solo úsalo si no tienes otra opción. Ordenar la salida en su aplicación puede ser mejor.


Solo deberás dar el orden correcto por declaración.

SELECT ID FROM myTable WHERE ID IN(1,2,3,4) ORDER BY ID

¿Por qué querría que ordenen sus datos desordenados como en su ejemplo?

Si no le importa concatenar consultas largas, intente de esa manera:

SELECT ID FROM myTable WHERE ID=1 UNION SELECT ID FROM myTable WHERE ID=3 UNION SELECT ID FROM myTable WHERE ID=2