복붙노트

[SQL] 쿼리에 대한 행 번호를 얻기

SQL

쿼리에 대한 행 번호를 얻기

나는 하나 개의 행을 반환하는 쿼리가 있습니다. 나는 테이블을 정렬 할 때 내가 쿼리있어 행의 행 인덱스를 찾을 수있는 방법이 있습니까?

나는 ROWID를 시도했지만 내가 행 # 7을 예상 할 때 # 582를 가지고있다.

예 :

    CategoryID  Name            
    I9GDS720K4  CatA
    LPQTOR25XR  CatB
    EOQ215FT5_  CatC
    K2OCS31WTM  CatD
    JV5FIYY4XC  CatE
--> C_L7761O2U  CatF <-- I want this row (#5)
    OU3XC6T19K  CatG
    L9YKCYAYMG  CatH
    XKWMQ7HREG  CatI

나는 예상치 못한 결과를 ROWID를 시도했다 :

SELECT rowid FROM Categories WHERE CategoryID = 'C_L7761O2U ORDER BY Name

편집 : 나는 또한 (아래) J 쿠퍼의 제안을 시도했지만, 행 번호는 바로이 아니다.

 using (var cmd = conn.CreateCommand()) {
        cmd.CommandText = string.Format(@"SELECT (SELECT COUNT(*) FROM Recipes AS t2             WHERE t2.RecipeID <= t1.RecipeID) AS row_Num 
                FROM Recipes AS t1 
                WHERE RecipeID = 'FB3XSAXRWD'
                ORDER BY Name";
        cmd.Parameters.AddWithValue("@recipeId", id);
        idx = Convert.ToInt32(cmd.ExecuteScalar());

해결법

  1. ==============================

    1.여기에 SQLite는에 행 번호를 얻을 수있는 방법은 다음과 같습니다

    여기에 SQLite는에 행 번호를 얻을 수있는 방법은 다음과 같습니다

    SELECT CategoryID,
           Name,
           (SELECT COUNT(*)
            FROM mytable AS t2
            WHERE t2.Name <= t1.Name) AS row_Num
    FROM mytable AS t1
    ORDER BY Name, CategoryID;
    
  2. ==============================

    2.다음은 값의 순서를 얻을 수 Spatialite에서 사용할 수있는 재미있는 트릭입니다. 당신이 WHERE 절은 값으로 제한으로 COUNT () 함수를 사용하는 경우> = 현재 값은, 그 수는 실제로 순서를 제공 할 것입니다. 나는 그래서 만약 포인트 층은 열이 "값"과 "mypoints"와 "val_order을"이라고 :

    다음은 값의 순서를 얻을 수 Spatialite에서 사용할 수있는 재미있는 트릭입니다. 당신이 WHERE 절은 값으로 제한으로 COUNT () 함수를 사용하는 경우> = 현재 값은, 그 수는 실제로 순서를 제공 할 것입니다. 나는 그래서 만약 포인트 층은 열이 "값"과 "mypoints"와 "val_order을"이라고 :

    SELECT value, (
    SELECT count(*) FROM mypoints AS my 
    WHERE my.value>=mypoints.value) AS val_order
    FROM mypoints 
    ORDER BY value DESC;
    

    값의 내림차순을 제공합니다. 나는 "val_order"열이 방법을 업데이트 할 수 있습니다 :

    UPDATE mypoints SET val_order = (
    SELECT count(*) FROM mypoints AS my 
    WHERE my.value>=mypoints.value
    );
    
  3. ==============================

    3.당신은 두 가지 방법으로 설명 할 수있다 요구하고있다,하지만 난 믿고있어 당신은 무엇을 결과 테이블을 정렬 한 후 종류에 따라 해당 행 번호를하고자합니다.

    당신은 두 가지 방법으로 설명 할 수있다 요구하고있다,하지만 난 믿고있어 당신은 무엇을 결과 테이블을 정렬 한 후 종류에 따라 해당 행 번호를하고자합니다.

    declare @resultrow int
    
    select 
          @resultrow = row_number() OVER (ORDER BY Name Asc) as 'Row Number'
    from Categories WHERE CategoryID = 'C_L776102U'
    
    select @resultrow
    
  4. from https://stackoverflow.com/questions/9151706/getting-row-number-for-query by cc-by-sa and MIT license