SQLite Random () En ORDER BY no se está clasificando correctamente

Mi consulta SQLite parece estar devolviendo resultados fuera de la cláusula "ORDER BY". Cuando ejecuto el siguiente, la tercera columna me está dando los valores aleatorios que quiero, pero el ORDER BY parece que se está ignorando. El conjunto de resultados es aparentemente aleatoriamente ordenado.

// frequency is an int of either 5, 10, or 15 String query = "SELECT id, name, ABS( RANDOM() % frequency ) FROM person ORDER BY 3" SQLiteDatabase database = this.getReadableDatabase(); Cursor cursor = database.rawQuery(query, null); 

Devuelve algo como:

 id name (random) ------------------------------ 16 Joe 1 4 Jack 0 67 Jane 7 23 Bob 3 

He intentado muchas variaciones, incluyendo las siguientes, pero todas con resultados similares: filas no ordenadas en la tercera columna:

 "SELECT id, name, (RANDOM() % frequency) AS myRand FROM person ORDER BY myRand" id name myRand ------------------------------ 23 Bob 2 16 Joe 1 67 Jane -4 4 Jack 0 

o

 "SELECT id, name, CAST(ABS( RANDOM() % frequency ) AS TEXT) AS myRand FROM person ORDER BY myRand" id name myRand ------------------------------ 23 Bob "1" 16 Joe "2" 67 Jane "1" 4 Jack "5" 

En la desesperación, incluso probé esto …

 "SELECT id, name, 'A' || CAST(ABS( RANDOM() % frequency ) AS TEXT) AS myRand FROM person ORDER BY myRand" id name myRand ------------------------------ 4 Jack "A9" 23 Bob "A3" 67 Jane "A8" 16 Joe "A2" 

Los valores de resultados reales para la tercera columna son, por supuesto, diferentes para cada ejecución, pero la falta de clasificación en la tercera columna es coherente. ¿Por qué los resultados no se ordenan en la tercera columna?

¿Por qué los resultados no se ordenan en la tercera columna?

Debido a que la columna es una expresión que se reevalúa para ORDER BY propósitos, la producción de diferentes valores aleatorios.

Lo sentimos, por el momento no se puede pensar en una forma práctica de preservar el valor del pedido aleatorio en cada fila. Considere cambiar sus requisitos – ORDER BY RANDOM() no funciona bien en grandes conjuntos de datos de todos modos.

  • Android - Código de error 11 al importar la base de datos Sqlite en Galaxy Note
  • Cómo utilizar una base de datos existente con una aplicación de Android
  • No es posible obtener datos de la base de datos Sqlite
  • ¿Cómo migrar la aplicación SQLite existente a la biblioteca de persistencia de habitaciones?
  • SQLite lectura y escritura simultánea
  • Android sqllite idioma turco
  • ¿Qué sucede con las teclas principales de autoincremento después de borrar?
  • Eliminar todas las filas de una tabla, lanza nullpointer
  • ¿Hay alguna manera eficiente de hacer la consulta de base de datos Android más rápido?
  • Necesidad de almacenar LOTES de datos en el dispositivo Android, pensando en ir OODB
  • Compruebe si la consulta SQL ha tenido éxito en Android SQLite
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.