Pregunta

Tengo una matriz PHP con los números de identificación de en ella. Estos números ya están ordenados.

Ahora me gustaría obtener mi resultado a través del método IN (), para obtener todos los de la ID.

Sin embargo, estas identificaciones deben ser ordenados como en el método de IN.

Por ejemplo:

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

En caso de 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!

¿Fue útil?

Solución

Creo que puede estar buscando para la función CAMPO -, mientras que normalmente se considera como una función de cadena, que funciona bien para los números, también

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

Otros consejos

Se puede usar FIELD() :

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

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

Es una especie de truco feo, sin embargo, lo que en realidad sólo lo uso si no tiene otra opción. Clasificación de la salida en su aplicación puede ser mejor.

estándar SQL no proporciona una manera de hacer esto (MySQL puede, pero yo prefiero soluciones que son independiente del proveedor para que pueda cambiar DBMS' en cualquier momento).

Esto es algo que debe hacer en el procesamiento posterior después el conjunto de resultados se devuelve. SQL sólo se les puede volver en un orden especificado en la "orden de" cláusula (o en cualquier orden si no hay tal cláusula).

La otra posibilidad (aunque no me gusta, estoy moralmente obligado a darle la opción) es hacer múltiples viajes a la base de datos, una para cada ID, y procesarlos ya que vienen en:

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.

Usted sólo tendrá que dar la orden correcta por la declaración.

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

¿Por qué quieres para obtener sus datos ordenados desordenada como en su ejemplo?

Si no te importa concatening consultas largas, trate 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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top