[英]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.