Здравствуйте
Я хотел бы сделать событие для моего приложения
, который работает на вставке новых 3 записи для 1-пользователя каждого полуночного
поэтому количество строк должна бытьSQL вставить в выберите с параметром для использования с планировщиком событий
n x 3
п UserIds
+---------+-----------+-------+------------+------+----------+-------------+-------+
| userID | userNAME | chaID | chaNAME | goal | gender | row_number | dummy |
+---------+-----------+-------+------------+------+----------+-------------+-------+
| 1 | Nanyang | 1 | blahblah | 1 | 2 | 1 | 1 |
| 1 | Nanyang | 21 | something | 1 | 2 | 2 | 1 |
| 1 | Nanyang | 2 | anything | 1 | 2 | 3 | 1 |
| 2 | Julie | 3 | x | 2 | 1 | 1 | 2 |
| 2 | Julie | 12 | y | 2 | 1 | 2 | 2 |
| 2 | Julie | 23 | z | 2 | 1 | 3 | 2 |
| 3 | Kingkong | 4 | a | 1 | 2 | 1 | 3 |
| 3 | Kingkong | 5 | b | 1 | 2 | 2 | 3 |
| 3 | Kingkong | 6 | c | 1 | 2 | 3 | 3 |
+---------+-----------+-------+------------+------+----------+-------------+-------+
row_number будут завернуты, пока они не < = 3
из моего письменного ..
set @num := 0, @type := ‘';
CREATE TABLE random
as
(
SELECT
*
FROM (
select userID,userNAME, chaID, chaNAME,goal,gender,
@num := if(@type = userID, @num +1,1) as row_number,
@type := userID as dummy
from userchar
order by userID
) as x where x.row_number <= 3)
Во всяком случае, я использовал, чтобы попытаться создать таблицу с Select the first/least/max row per group in SQL
и она работает очень хорошо, и получить результат, как я показано на рисунке. то мне нужно insert into
в event
вместо create table
так я получил этот код ниже .. потому что я не могу использовать SET @parameter
для вставки
INSERT INTO random(userID, userNAME, chaID, chaNAME, goal, gender,row_number,dummy,status)
select *
from (select userID, userNAME, chaID, chaNAME, goal, gender,
(@num := if(@type = userID, @num +1,1)
) as row_number,
userID as dummy,
@stat as status
from hb_usercha u cross join
(select @type = '', @num := 0, @stat := '') params
order by userID,rand()
)
where row_number <= 3;
и это результат того, что я получил
+---------+-----------+-------+------------+------+----------+-------------+-------+
| userID | userNAME | chaID | chaNAME | goal | gender | row_number | dummy |
+---------+-----------+-------+------------+------+----------+-------------+-------+
| 1 | Nanyang | 1 | blahblah | 1 | 2 | 1 | 1 |
| 1 | Nanyang | 21 | something | 1 | 2 | 1 | 1 |
| 1 | Nanyang | 2 | anything | 1 | 2 | 1 | 1 |
| 1 | Nanyang | 3 | s | 2 | 1 | 1 | 1 |
| 1 | Nanyang | 12 | o | 2 | 1 | 1 | 1 |
| 1 | Nanyang | 23 | m | 2 | 1 | 1 | 1 |
| 1 | Nanyang | 4 | e | 1 | 2 | 1 | 1 |
| 2 | Julie | 5 | xoxo | 1 | 2 | 1 | 2 |
| 2 | Julie | 6 | xxx | 1 | 2 | 1 | 2 |
+---------+-----------+-------+------------+------+----------+-------------+-------+
.
.
.
.
Кажется row_number
петля не работает
И я понятия не имею, что происходит
Оба кода одинаковы, только что изменили параметры путь
Так было бы очень хорошо, если кто-то может объяснить мне
Спасибо большое
Вы хотите, чтобы сделать это для всех пользователей существует в 'user_char' таблицы или для некоторых определенных пользователей? –
sry для позднего ответа, но да, я собираюсь сделать это для всех пользователей в базе данных. –
Отметьте ответ –