Вот мое текущее заявление MySQL:Mysql Сброс переменной после выполнения каждой строки
SET @rownum := 0;
SELECT school_id,
mb_no AS student_id,
xp,
@rownum := @rownum + 1 AS rank_school_position
FROM users
WHERE school_id IN (
SELECT school_id
FROM users)
ORDER BY xp DESC;
Вот пример таблицы
CREATE TABLE `users` (
`school_id` INT(11) NOT NULL DEFAULT '0',
`mb_no` INT(11) NOT NULL DEFAULT '0',
`xp` INT(10) NOT NULL DEFAULT '0')
и мои выборочные данные
INSERT INTO `d_copy` (`school_id`, `mb_no`, `xp`) VALUES
(610, 1, 1190),
(610, 2, 195),
(611, 3, 0),
(610, 4, 35),
(610, 5, 160),
(611, 6, 0),
(610, 7, 175),
(611, 8, 0),
(610, 9, 95),
(610, 10, 4770);
Как сбросить назад @rownum
до 0
на каждые SELECT school_id FROM users
выполнено?
Мой ожидаемый результат будет как этот
Пожалуйста, измените свой вопрос и предоставить образец данные и желаемые результаты. Объяснение не ясно. –
@GordonLinoff [здесь] (http://stackoverflow.com/a/16715618/4020264) вы предупреждали об использовании переменных внутри запросов, неужели это все еще стоит? – 1010
Это не то же самое, что @GordonLinoff ссылается на 'select @x, @x: = @x + 1'. первое '@ x' может иметь старое значение, или новое, его неопределенное. –