sql >> データベース >  >> RDS >> Mysql

このMySQLクエリが間違った行番号を生成するのはなぜですか?

    行を増やすには、@numを移動するのと同じくらい簡単なことです。 外部クエリへの計算。そしてその状況では、@current_product_id @numとしては必要ありません 直接インクリメントできます。

    SET @num :=0, @current_shop_id := NULL, @current_product_id := NULL;
    
    SELECT 
      *,
      /* Perform the row increment in the outer query so it acts on the final rowset */
      @num := @num+1 AS row_number
    FROM (
        SELECT products.shop_id, products.product_id, @current_shop_id := shops.shop_id AS shop_dummy, @current_product_id := products.product_id AS product_dummy
    
        FROM
        favorites fav1 INNER JOIN
        products ON
        fav1.product_id=products.product_id AND 
        fav1.current=1 AND
        fav1.closeted=1 AND 
        fav1.user_id=30  INNER JOIN
    
        shops ON
        shops.shop_id = products.shop_id
    
        ORDER BY shops.shop ASC, products.product_id DESC
    
    ) AS rowed_results 
    WHERE
      rowed_results.row_number>=0
      AND rowed_results.row_number<(20)
      AND shop_id=130
    


    1. MariaDBのSUM()関数

    2. PL /Java1.5.2をPostgreSQL11にインストールします

    3. mysqlのmax(length(field))

    4. Rails:OSXへのPGgemのインストール-ネイティブ拡張のビルドに失敗