За последние 24 часа нас посетили 56809 программистов и 1750 роботов. Сейчас ищут 772 программиста ...

Обновить по ROW_NUMBER

Тема в разделе "MySQL", создана пользователем Invision, 29 июн 2012.

  1. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Не получается составить простой запрос:

    Структура:
    id | ... | sort
    1 .......... 0
    2 .......... 0
    3 .......... 0
    6 .......... 0
    7 .......... 0
    11 .......... 0

    Необходимо обновить (over(ORDER BY id))

    Структура:
    id | ... | sort
    1 .......... 1
    2 .......... 2
    3 .......... 3
    6 .......... 4
    7 .......... 5
    11 .......... 6

    Добавлено спустя 13 минут 21 секунду:
    SELECT ROW_NUMBER() OVER (ORDER BY goo_id) AS rn FROM `Goods`
    выводит ошибку
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    получается MS SQL и Oracle поддерживает метод этот.. нужно искать альтернативу(

    Добавлено спустя 20 минут 46 секунд:
    select goo_id, @i := @i + 1 as result from Goods,(select @i := 0) temp order by goo_id;
    осталось прицепить update

    Добавлено спустя 20 минут 47 секунд:
    Работает

    UPDATE `Goods`, (select goo_id, @i := @i + 1 as result from Goods,(select @i := 0) temp order by goo_id) as goo SET `sort` = goo.result WHERE Goods.goo_id = goo.goo_id

    Но кажется на каждую запись весь список проходит по новой. Есть еще у кого идеи?
     
  3. wds

    wds Активный пользователь

    С нами с:
    27 июл 2012
    Сообщения:
    16
    Симпатии:
    0
    Код (Text):
    1. set @i =  0;
    2.  
    3. update goods set sort = ( @i:=@i+1)