SQL - как определить, в какой позиции / порядке / количестве находится моя выбранная запись? - PullRequest
5 голосов
/ 03 июня 2011

Представь, у меня есть стол:

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

Мне интересны все записи, где field1 = 1 - и конкретно field2 = 44321, но я хочу знать, какая позиция в моем выборе field1=1 (в данном случае это будет 3).

 SELECT * FROM table WHERE field1 = 1 ORDER BY id

достанет мне все записи, которые я хочу, но то, что я хочу узнать, это число 3 (позиция в выборе, что 44321 - это 3-я запись в запросе, я хочу знать что 3).

Есть ли какой-нибудь элегантный запрос, который я могу сделать, чтобы выяснить положение строки, в которой я особенно заинтересован, или мне нужно выбрать курсор и пройтись по моему набору записей и выяснить, что-то с контентом ++?

Я знаю поле1, которое я хочу, я знаю поле2, которое я хочу - я просто хочу знать, какая позиция field1 + field2 находится в большем запросе field1 = 1 - это 3, позиция).

Ответы [ 2 ]

6 голосов
/ 03 июня 2011

Попробуйте это:

В столбце POS указывается позиция искомой записи

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 
1 голос
/ 03 июня 2011
SELECT COUNT(*)+1
FROM table
WHERE ID<(SELECT TOP 1 ID
          FROM table
          WHERE field1=1
          AND field2=44321)
...