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

MySQLで特定の基準を指定して「次の」行を選択する

    元のクエリはかなり賢いです。これは少し異なるアプローチです。サブクエリの次の領域を取得します(例のように相関サブクエリを使用)。次に、条件が真である行をカウントします。

    select sum(case when area = 'Front' and nextarea = 'Back' then 1 else 0 end)
    from (SELECT t1.*,
                 (SELECT t2.area 
                  FROM table t2 
                  where t2.order > t1.order
                  order by t2.order
                  limit 1
                 ) as nextarea 
    FROM table t1;
    

    このクエリはあなたのクエリよりも高価です。 orderで適切な等式条件を使用することができました 桁。ここでは、limitで並べ替えが必要です 次の値を取得します。 (order, area)の複合インデックス パフォーマンスに役立つはずです。




    1. MySQLで既存のデータのGUIDを生成しますか?

    2. Entity FrameworkがネストされたSQLクエリを生成するのはなぜですか?

    3. MYSQLDBにBLOBとして保存されている画像を取得します

    4. LIMITが適用される前に結果カウントを取得するための最良の方法