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

最後の連続した行を見つける

    SELECT a.id, a.readVal 
    FROM consecutiv a
    WHERE a.readVal != 
       (SELECT b.readVal 
        FROM consecutiv b 
        WHERE b.id > a.id 
        ORDER BY id ASC
        LIMIT 1)
    ORDER BY a.id;
    

    戻り値:

     id | readval
    ----+---------
      3 |       2
      8 |       3
      9 |       4
     10 |       5
     12 |       6
     14 |       2
    

    最後の行も必要な場合:

    SELECT c.id, c.readVal, c.nextReadVal
    FROM 
      (SELECT 
       a.id, a.readVal, 
         (SELECT b.readVal
          FROM consecutiv b 
          WHERE b.id > a.id 
          ORDER BY id ASC 
          LIMIT 1) AS nextReadVal
       FROM consecutiv a) AS c
    WHERE readVal != nextReadVal OR nextReadVal IS NULL
    ORDER BY c.id;
    

    戻り値:

     id | readval | nextreadval
    ----+---------+-------------
      3 |       2 |           3
      8 |       3 |           4
      9 |       4 |           5
     10 |       5 |           6
     12 |       6 |           2
     14 |       2 |           6
     15 |       6 |
    



    1. Oracleでプロセスが複数回実行されないようにする最善の方法はありますか?

    2. PHP-PDOは、列をインデックス、列を値として結果セットをフェッチします

    3. MySQL LIKEクエリの速度を上げますか?

    4. MySQLに外部キーを導入するとパフォーマンスが低下しますか