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

@row:[email protected]+1に相当するphpとは何ですか

    MySQL> 8.0

    ウィンドウ関数を使用して同じタスクを実行できます。私が間違っていない場合、正しい方法は次のようになります。

    SELECT t.* FROM (SELECT *, Row_number() OVER() AS rn FROM location_values) t 
    WHERE t.rn % 10 = 1
    

    https://www.db-fiddle.com/f/tb2nLZ6dkDPaQxkc6My9Yg/2

    MySQL <8.0

    セッションプロパティを使用してウィンドウ関数をエミュレートできますが、これは常に信頼できるとは限りません。

    方法1(1回だけ実行できます。お勧めしません):

    SELECT t.*
    FROM
        (SELECT *, @position:=((SELECT ifnull(@position, 0)) + 1) AS rn FROM location_values) t
    WHERE t.rn % 10 = 1
    

    方法2:

    SELECT location_values.*
    FROM location_values,
        (SELECT @row_number:=0) AS temp
    WHERE (@row_number:[email protected]_number + 1) % 10 = 1
    

    https://www.db-fiddle.com/f/tb2nLZ6dkDPaQxkc6My9Yg/3




    1. MariaDBでのPERIOD_ADD()のしくみ

    2. HA/DRソリューションの自己妄想を避ける

    3. MySQLデータベースのテーブルのサイズを取得するにはどうすればよいですか?

    4. Oracleで特殊文字を置き換えてから改行する方法