0

テーブルからブール値を挿入/更新するための最良の解決策は何ですか?

毎週または毎月、point現在のデータなどの数を変更できます。

+----+----------+-----------+--------------+-------+--------+
| id | phone_id | tarrif_id | affiliate_id | point | active |
+----+----------+-----------+--------------+-------+--------+
|  2 |        6 |         2 |            3 |   7.3 |      0 |
|  3 |        6 |         2 |            3 |   8.5 |      0 |
|  4 |        6 |         2 |            3 |  12.5 |      0 |
|  5 |        6 |         2 |            3 |   3.5 |      1 |
|  6 |       20 |         2 |            3 |  10.5 |      1 |
+----+----------+-----------+--------------+-------+--------+

phone_id同じ、新しいポイントtarrif_idで新しいレコードを挿入し、affiliate_id他のレコードを無効にしますactive=0

新しいポイントが変更されました。例:

+----+----------+-----------+--------------+-------+--------+
| id | phone_id | tarrif_id | affiliate_id | point | active |
+----+----------+-----------+--------------+-------+--------+
|  2 |        6 |         2 |            3 |   7.3 |      0 |
|  3 |        6 |         2 |            3 |   8.5 |      0 |
|  4 |        6 |         2 |            3 |  12.5 |      0 |
|  5 |        6 |         2 |            3 |   3.5 |      0 |
|  6 |       20 |         2 |            3 |  10.5 |      0 |
|  7 |        6 |         2 |            3 |  20.2 |      1 |
|  8 |       20 |         2 |            3 |  33.7 |      1 |
+----+----------+-----------+--------------+-------+--------+
4

1 に答える 1

0

あなたはこれを行うことができます:

-- 1. Disable other records
UPDATE point SET active = 0;

-- 2. Insert new rows
INSERT INTO point (phone_id, tarrif_id, affiliate_id, point, active)
SELECT phone_id, tarrif_id, affiliate_id, /* Your computation here */, 1
FROM point
GROUP BY phone_id, tarrif_id, affiliate_id
WHERE active = 0;

point新しい値 (例では 20.2 と 33.7)を計算する方法を知る必要があります。

于 2012-09-21T12:25:18.710 に答える