Mysql
 sql >> база данни >  >> RDS >> Mysql

Изберете запис само ако този преди него има по-ниска стойност

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

ИЗХОД

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

КРАТКО ОБЯСНЕНИЕ

Това, което прави заявката по-горе, е, че генерира пореден номер, който имитира ROW_NUMBER() на друг RDBS за всеки SerialNumber подредени по ID във възходящ ред.

След това двете подзаявки се обединяват чрез SerialNumber и генериран пореден номер. На генерираното число стойността на първата подзаявка трябва да е равна на плюс една от стойността на втората подзаявка, за да се получи броят на тонера при следващата пренареждане.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql_connect (localhost / 127.0.0.1) бавен на платформата Windows

  2. MySQL XML заявка

  3. MySQL ПОРЪЧАЙ ПО IN()

  4. MySQL получава низ(ове) между две # / множество двойки #

  5. Върнете ред само ако стойността не съществува