2011-06-03 10 views
5

Imagínese que tengo una tabla:SQL - cómo determinar en qué posición/orden/cuenta está mi registro seleccionado?

ID  field1  field2 
--- -------  ------ 
111  1   11113 
112  1   11114 
113  1   44321 
114  1   49339 
115  2   53234 

Estoy interesado en todos los registros donde field1 = 1 - y específicamente field2 = 44321, pero quiero saber cuál es la posición que está en mi selección de field1=1 (en este caso, es d ser 3).

SELECT * FROM table WHERE field1 = 1 ORDER BY id 

me llevará todos los registros que quiero, sino lo que desee saber es el número 3 (la posición en la selección que 44321 es - es la tercera registro de la consulta, quiero saber eso 3).

¿Existe alguna consulta elegante que pueda hacer para conocer la posición de la fila en la que estoy particularmente interesado, o necesito buscar el cursor y recorrer mi conjunto de registros y averiguar algo sobre el negocio de contador ++?

Conozco el campo1 que quiero, conozco el campo2 que quiero - Solo quiero saber qué posición es field1 + field2 en el campo mayor1 = 1 consulta - que 3, la posición).

+0

Hay algunos métodos específicos de motor que puede hacer. ¿Qué base de datos estás usando, mysql? –

+1

Creo que la pregunta es un duplicado: http://stackoverflow.com/questions/907438/can-i-get-the-position-of-a-record-in-a-sql-resulttable –

+0

Lo etiqueté como "tsql" (es SQL 2008). @Sid - tienes razón. Donde fallé es en mi búsqueda, estaba pensando en "posición", "orden", "conteo", pero no en el número de fila. Gracias. – Jason

Respuesta

6

Prueba esto:

columna POS dará la posición del registro que está buscando

WITH qry AS 
(
    SELECT a.* 
       ROW_NUMBER() OVER(ORDER BY id) POS 
     FROM table a 
    WHERE field1 = 1 
) 
SELECT qry.pos 
    FROM qry 
WHERE field2 = 44321 
+0

Funcionó como un amuleto, gracias. – Jason

1
SELECT COUNT(*)+1 
FROM table 
WHERE ID<(SELECT TOP 1 ID 
      FROM table 
      WHERE field1=1 
      AND field2=44321) 
+1

Este funciona, con una pequeña modificación, la consulta externa también necesita el calificador field1 = 1; de lo contrario, capta todos los registros de la tabla. – Jason

+1

Aunque me encanta su pensamiento programático creativo, ¡muchas gracias! – Jason

Cuestiones relacionadas