I have the following problem. I have an accounts and a scoreboard table and I try to reset all values on the end of the month in the scoreboard by inserting a new record with the value 0.
SET @mid = (SELECT MAX(id) AS mid FROM accounts);
WHILE (@mid > 0)
BEGIN
IF @mid NOT IN (SELECT id FROM accounts) DO CONTINUE;
INSERT INTO scoreboard("uid", "balance", "date") VALUES (@mid, 0,(SELECT CURRENT_DATE()));
SET @mid = @mid - 1;
END
But whatever I try it breaks and I have no idea why.
MySQL: mysqlnd 5.0.12-dev – 20150407
MariaDB: 10.3.27-MariaDB-0+deb10u1
Example:
accounts
| id | name |
|---|---|
| 1 | Play_it |
| 3 | User2 |
scoreboard
| uid | balance | date |
|---|---|---|
| 1 | 20 | 2021-03-09 |
Expected:
scoreboard
| uid | balance | date |
|---|---|---|
| 1 | 20 | 2021-03-09 |
| 1 | 40 | 2021-03-31 |
| 3 | 30 | 2021-03-31 |
| 1 | 0 | 2021-04-01 |
| 3 | 0 | 2021-04-01 |
Advertisement
Answer
Do you want something like this?
insert into scoreboard (uid, balance, date)
select a.id, 0, curdate()
from accounts a;
This inserts a new row in scoreboard for each row in account.