Lo ideal sería que yo quiero hacer esto:Cómo actualizar y el orden mediante el uso de MS SQL
UPDATE TOP (10) messages SET status=10 WHERE status=0 ORDER BY priority DESC;
En Inglés: Quiero conseguir los (= 0 Estado) Los mensajes de la parte superior 10 disponibles de la base de datos y encerrarlos (estado = 10). Un mensaje con una prioridad más alta debe obtenerse primero.
lamentablemente MS SQL no permite una orden por cláusula en la actualización.
De todos modos, ¿cómo evitar esto?
dado que me gustaría un índice para esta solución. ¿Utilizaría entonces: (prioridad desc, estado) o (estado, prioridad desc)? En otras palabras: ¿el orden utilizado es anterior al dónde? – Toad
En realidad, la consulta no era correcta ... la cláusula order by no se puede usar en una subconsulta A MENOS QUE también se proporcione un TOP. (Esto es lo que dice el motor SQL). Entonces la consulta correcta debería ser: Mensajes de actualización SET status = 10 WHERE ID in (SELECCIONAR TOP (10) Id FROM Tabla DONDE estado = 0 ORDENAR por prioridad DESC); – Toad
Tienes razón, me perdí la cima cuando escribí la edición final. Voy a editarlo como dijiste –