SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.09.2012 15:46:44

dadli
Завсегдатай
Зарегистрирован: 16.10.2011
Сообщений: 50

нумерация строк при условии

я питаюс при виборке данних из таблиц, нумерировать записи, но нумерировать так: в перви 3 запис нумерировать как
1
2
3

а потом (от четверти строки) начать нумерацка снова и продалжать етот втарои нумераця до конца всех записеи. то есть резултат надо такои

1
2
3
1
2
3
4
5
....
....
777

питаюс сделать так, но резултат етого запроса, обичная нумераця, от 1 до конца, не могу понимать почему? по моему етот запрос надо именно так нумерировать, как написал више, очен прашу, кто-то скажите плиз где мне логическая ошибка в етом запросе


mysql-> SET @n = 0
mysql-> SET @start_again = 'true'



SELECT

        CASE
            WHEN  @n = 3 AND @start_again = 'true' THEN  @n := 1
            ELSE @n := @n + 1
        END,

        CASE
            WHEN  @n = 3 AND @start_again = 'true' THEN  @start_again := 'false'
        END

FROM mytable


P.S. знаю что ето можно решить по другому, но скажите плиз, почему мои запрос, не даиот желательны резултат?

Отредактированно dadli (18.09.2012 15:47:37)

Неактивен

 

#2 18.09.2012 18:17:05

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: нумерация строк при условии

Потому что на этапе @n=2 конструкция
        CASE
            WHEN  @n = 3 AND @start_again = 'true' THEN  @n := 1
            ELSE @n := @n + 1
        END
сделает @n=3, а следующая конструкция сделает @start_again := 'false'.
Таким образом на следующем шаге у вас будет @n=3 и @start_again := 'false'. Т.е. условие для сброса счетчика никогда не выполняется.
Добавьте SELECT @n, @start_again, CASE....  чтобы наглядно видеть ход присвоения переменных.

Неактивен

 

#3 23.09.2012 12:49:17

dadli
Завсегдатай
Зарегистрирован: 16.10.2011
Сообщений: 50

Re: нумерация строк при условии

aх да, понятно, спасибо огромное  vasya

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson