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

値の変更時に選択

    これは一種のギャップと島の問題です。島は、同じbatchnumを持つ隣接する行です 、そしてあなたは各島の始まりを望んでいます。

    ここで、最も単純なアプローチはおそらくlag()です。 :

    select *
    from (
        select e.*,
            lag(batchnum) over(order by time) lag_batchnum
        from example e
    ) e
    where not lag_batchnum <=> batchnum
    

    これにはMySQL8.0が必要であることに注意してください。以前のバージョンでは、1つの代替手段が相関サブクエリを使用します:

    select e.*
    from example e
    where not batchnum <=> (
        select e1.batchnum
        from example e1
        where e1.time < e.time
        order by e1.time desc
        limit 1
    )
    

    これがDBFiddleのデモ です。




    1. Rails:同じアプリで同時にmysqlとpostgres?

    2. データベースのすべての行をハッシュ値で更新します

    3. AテーブルからAテーブルに値を挿入します

    4. Androidでsqliteデータベースを使用してテーブルを作成するにはどうすればよいですか?