Filas clasificando cambios después de actualizar una columna no relacionada con la clasificación en absoluto -- postgresql camp Relacionados El problema

Rows sorting changes after updating a column not related to sorting at all


0
vote

problema

Español

Tener un SQL generado por ORM como este:

  SELECT * FROM "games" WHERE "competition_id" IN (SELECT "id" FROM "competitions" WHERE "id"  IN (1,2,3)) ORDER BY "date" LIMIT 10   

Está mostrando filas 1 a 10.

Sin embargo, después de:

  UPDATE "games" SET "season_id"=2   

mismo SELECT devuelve filas como 1,2,3 ... 11, 12 en lugar de 1,2,3 ... 9, 10

Sí, las filas devueltas siguen siendo 10, pero las últimas siempre son reemplazadas por las posteriores a las 10 ...

Original en ingles

Have a ORM generated SQL like this:

SELECT * FROM "games" WHERE "competition_id" IN (SELECT "id" FROM "competitions" WHERE "id"  IN (1,2,3)) ORDER BY "date" LIMIT 10 

It is displaying rows 1 to 10.

However after:

UPDATE "games" SET "season_id"=2 

same SELECT returns rows like 1,2,3 ... 11, 12 instead of 1,2,3 ... 9, 10

Yes, returned rows are still 10, but last ones are always replaced with ones after 10...

  
         
         

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

flightSheet2 no garantiza qué filas se devolverán si existen múltiples resultados coincidentes dentro del alcance flightSheet3 . Por lo tanto, si tiene más de 10 filas con el mismo flightSheet4 , o si la mayoría tiene fechas diferentes, pero sucede que las filas 9, 10, 11 y 12 y 12 tienen el mismo flightSheet5 , no está garantizado para obtener resultados consistentes para los cuales se devolverá para las tragamonedas 9 y 10. PostgreSQL elegirá estos a su propia discreción, que a menudo cambiará cuando se actualizan los registros.

Intente agregar flightSheet6 a la lista de pedido para solucionar esto.

 

LIMIT doesn't guarantee which rows will be returned if multiple matching results exist within the ORDER BY scope. So if you have more than 10 rows with the same date, or if most have different dates but it so happens that the 9th, 10th, 11th and 12th rows have the same date, you aren't guaranteed to get consistent results for which will be returned for the 9th and 10th slots. PostgreSQL will choose these at its own discretion - which will often change when records are updated.

Try adding id to the ORDER BY list to fix this.

 
 
         
         

Relacionados problema

39  Python y MySQL  ( Python and mysql ) 
Puedo conseguir que Python funcione con PostgreSQL, pero no puedo hacer que funcione con MySQL. El problema principal es que, en la cuenta de alojamiento comp...

3  ¿Es "Campaign_ $" un mal nombre para una columna SQL?  ( Is campaign a bad name for a sql column ) 
PostgreSQL me ha permitido nombrar una columna "Campaign_ $". Me gusta el nombre porque es corto y al punto, y otros nombres potenciales como "Campaign_Receip...

6  Conexión de base de datos múltiple en rieles  ( Multiple database connection in rails ) 
Estoy usando Active_Delegate para una conexión múltiple en los rieles. Aquí estoy usando MySQL como Master_Database para algunos modelos, y PostgreSQL para al...

4  ¿La especificación SQL proporciona una mejor manera de hacer un órgano exclusivo de dos conjuntos?  ( Does the sql spec provide for a better way to do a exclusive oring of two sets ) 
Tengo un conjunto de resultados A que es 10 filas 1-10 {1,2,3,4,5,6,7,8,9,10} , y B que tiene 10 filas que consisten en EVENS 1- 20 {2,4,6,8,10,12,14,16...

7  Perfil PostgreSQL  ( Profiling postgresql ) 
Estoy investigando una aplicación respaldada por PostgreSQL. El uso de la CPU está constantemente más del 50% en un Xeon moderno con 4GB RAM. De ese 50% de ...

7  Pregunta de diseño de mesa simple  ( Simple table design question ) 
Estoy tratando de pensar un poco por delante y evitarme un poco de dolor extra si es posible. He tenido este problema en las aplicaciones anteriores y gener...

2  Clonación de datos jerárquicos  ( Cloning hierarchical data ) 
Supongamos que tengo una tabla jerárquica. Construir la forma clásica como esta: CREATE TABLE test (name text,id serial primary key,parent_id integer refer...

118  Literales de cadena y personajes de escape en PostgreSQL  ( String literals and escape characters in postgresql ) 
Intento de insertar un personaje de escape en una tabla da como resultado una advertencia. Por ejemplo: create table EscapeTest (text varchar(50)); inse...

2  Datos de paginación, tiene que ser una mejor manera  ( Paginating data has to be a better way ) 
He leído como 10 más o menos "tutoriales", y todos ellos involucran lo mismo: Tire de un recuento del conjunto de datos Tire del conjunto de datos releva...

2  El intento de conexión falló en el servidor PostgreSQL  ( Connection attempt failed in postgresql server ) 
En nuestro proyecto, estamos utilizando Postgressql (8.3) como servidor de base de datos, pero rara vez estamos enfrentando problema (una vez un tiempo). E...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos