Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pilih catatan hanya jika yang sebelumnya memiliki nilai lebih rendah

SELECT  a.ID, a.SerialNumber, 
        b.Remain_Toner_Black BeforeCount,
        a.Remain_Toner_Black AfterCount
FROM    
        (
            SELECT  A.ID, 
                    A.SerialNumber, 
                    A.Remain_Toner_Black,
                    (
                        SELECT  COUNT(*)
                        FROM    tableName c
                        WHERE   c.SerialNumber = a.SerialNumber AND
                                c.ID <= a.ID) AS RowNumber
            FROM    TableName a
        ) a
        INNER JOIN
        (
            SELECT  A.ID, 
                    A.SerialNumber, 
                    A.Remain_Toner_Black,
                    (
                        SELECT  COUNT(*)
                        FROM    tableName c
                        WHERE   c.SerialNumber = a.SerialNumber AND
                                c.ID <= a.ID) AS RowNumber
            FROM    TableName a
        ) b ON a.SerialNumber = b.SerialNumber AND
                a.RowNumber = b.RowNumber + 1
WHERE   b.Remain_Toner_Black < a.Remain_Toner_Black

KELUARAN

╔══════╦═════════════════╦═════════════╦════════════╗
║  ID  ║  SERIALNUMBER   ║ BEFORECOUNT ║ AFTERCOUNT ║
╠══════╬═════════════════╬═════════════╬════════════╣
║ 7331 ║ Z5UEBJAC900002Y ║          36 ║        100 ║
║ 7088 ║ 3960125290      ║           0 ║         93 ║
║ 7100 ║ 3960125290      ║          93 ║        100 ║
╚══════╩═════════════════╩═════════════╩════════════╝

Penjelasan SINGKAT

Apa yang dilakukan kueri di atas adalah menghasilkan nomor urut yang meniru ROW_NUMBER() pada RDBS lain untuk setiap SerialNumber diurutkan berdasarkan ID dalam urutan menaik.

Kedua subquery tersebut kemudian digabungkan melalui SerialNumber dan nomor urut yang dihasilkan. Pada nomor yang dihasilkan, nilai pada subquery pertama harus sama dengan ditambah satu nilai pada subquery kedua untuk mendapatkan jumlah toner pada reord berikutnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak tahu cara menjalankan mysqli_multi_query dan menggunakan hasil dari kueri terakhir

  2. ambil gambar base64 dari database

  3. Opsi yang tidak didukung disediakan untuk mysql_options()

  4. Apakah PHP memiliki konstruksi yang mirip dengan DataSet .NET?

  5. Kesalahan Pernyataan Disiapkan Java MYSQL:Periksa sintaks untuk digunakan di dekat '?' di baris 1