簡體   English   中英

MySQL(PHP):刪除SUM = 0的所有行

[英]Mysql (PHP): delete all rows which SUM = 0

我有這張桌子

+----+--------+
| id | amount |
+----+--------+
|  1 |     10 |
|  2 |      5 |
|  3 |     -5 |
|  4 |      6 |
|  5 |    -16 |
|  6 |      4 |
|  7 |      1 |
|  8 |     -3 |
+----+--------+

我需要刪除所有行(從最小ID到最大ID),即SUM = 0。

在我的示例中,如果我們划分表,我需要刪除ID 1,2,3,4,5,因為它們的SUM = 0(10 + 5-5 + 6-16),但保留記錄6,7, 8

我不知道如何編寫查詢,以讀取單步執行的行。

謝謝

DELETE a  
  FROM my_table a 
  JOIN 
     ( SELECT x.*
            , SUM(y.amount) running 
         FROM my_table x 
         JOIN my_table y 
           ON y.id <= x.id 
        GROUP 
           BY x.id
     ) b 
    ON b.id >= a.id 
 WHERE b.running = 0;

類似於PHP的偽代碼:

$data = get_data();
list($minID, $maxID, $currSum) = array($data[0]['id'], 0, 0);
foreach ( $data as $value ) {
  $currSum += $value['amount'];
  if ( !$currSum ) {
    $maxID = $value['id'];
    break;
  }
}
$sql = "DELETE FROM table WHERE id >= $minID AND id <= $maxID";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM