update limit n,-1

proc

Новичок
update limit n,-1

Привет всем!

Как мне сделать update всех строк, начиная с n?
 

proc

Новичок
Так для того, чтобы определить n, мне нужно выбрать select limit 10, потом определить значение в строке 10, и только после этого выполнять update? Както это не красиво.
 

Crazy

Developer
Re: update limit n,-1

Автор оригинала: proc
Как мне сделать update всех строк, начиная с n?
Никак. Тебе, кстати, кто-то обещал, что update обрабатывает строки "сверху вниз" (что бы не значил этот термин)?
 

proc

Новичок
Re: Re: update limit n,-1

Автор оригинала: Crazy
Никак. Тебе, кстати, кто-то обещал, что update обрабатывает строки "сверху вниз" (что бы не значил этот термин)?
Мне ето обещал Mysql
UPDATE table SET field='no' WHERE group_id = 2 ORDER BY score DESC LIMIT 10

Результат сортируеться и десять записей СВЕРХУ ВНИЗ изменяються.
Конечно внутри этих записей изменнеия могут проходить не по порядку, но меня ето мало волнует. Главное что обработаны верхнии 10 строк.
 

Crazy

Developer
Re: Re: Re: update limit n,-1

Автор оригинала: proc
Мне ето обещал Mysql
UPDATE table SET field='no' WHERE group_id = 2 ORDER BY score DESC LIMIT 10
1. В какой версии MySQL в UPDATE поддерживается "ORDER BY"?
2. Где в документации это написано?

Результат сортируеться
Какой еще результат? Результат чего?

Главное что обработаны верхнии 10 строк.
Еще раз. Медленно. В реляционных базах нет ни верхних, ни нижних строк.
 

.des.

Поставил пиво кому надо ;-)
2Crazy
1. В какой версии MySQL в UPDATE поддерживается "ORDER BY"?
Самое удивительно что он действительно поддерживается начиная с 4.0.0.

Но насколько я помню.. об этом даже в самом новом стандарте SQL не сказано по вполне понятным причинам :).
Так что команда mysql ab опять "впереди планеты всей"

2proc
Если ты будешь читать документацию mysql, считая, что это и есть тот самый SQL, то тебя ждет очень много сюрпризов.
Послушайся Crazy, и ЯВНО укажи, что именно, тебе нужно проапдейтить.
 

Crazy

Developer
Автор оригинала: .des.
Самое удивительно что он действительно поддерживается начиная с 4.0.0.
Гадкий. Ты мне его спугнул. Я не зря спрашиваю о месте в документации. :)

Как мы видим, мой первый вопрос привел человека к ORDER BY. Может быть, после второго он вчитается в документацию и вздрогнет.
 

proc

Новичок
Re: Re: Re: Re: update limit n,-1

Автор оригинала: Crazy
1. В какой версии MySQL в UPDATE поддерживается "ORDER BY"?
2. Где в документации это написано?

http://dev.mysql.com/doc/mysql/ru/UPDATE.html



Еще раз. Медленно. В реляционных базах нет ни верхних, ни нижних строк.
Понятно что физичиски их нет, а вот виртуально они есть.
Вот что пишит на Mysql - Если задано выражение ORDER BY, то строки будут обновляться в указанном в нем порядке

-~{}~ 03.05.04 13:39:

Автор оригинала: .des.
2Crazy

Самое удивительно что он действительно поддерживается начиная с 4.0.0.

Но насколько я помню.. об этом даже в самом новом стандарте SQL не сказано по вполне понятным причинам :).
Так что команда mysql ab опять "впереди планеты всей"

2proc
Если ты будешь читать документацию mysql, считая, что это и есть тот самый SQL, то тебя ждет очень много сюрпризов.
Послушайся Crazy, и ЯВНО укажи, что именно, тебе нужно проапдейтить.
Ситуация: есть таблица в которой есть поле - "score".
Что нужно: Выбрать 10 первых записей с наибольшим значением в этом поле, а остальные записи изменить.

Вот мой запрос:
UPDATE table SET ok='no' WHERE group_id = 2 AND ..... ORDER BY score DESC LIMIT 10,-1
 

Crazy

Developer
Замечательно. А если у тебя в таблице 9 записей с score=100, 20 записей с score=10 и 100 записей с score=1, то ты готов обратобать 1 запись с score=100, а остальные 19 (неважно какие) из обработки исключить? Оригинальный алгоритм.

Если не секрет, какую задачу ты решаешь столь оригинально?
 

proc

Новичок
Автор оригинала: Crazy
Замечательно. А если у тебя в таблице 9 записей с score=100, 20 записей с score=10 и 100 записей с score=1, то ты готов обратобать 1 запись с score=100, а остальные 19 (неважно какие) из обработки исключить? Оригинальный алгоритм.

Если не секрет, какую задачу ты решаешь столь оригинально?
Новостной саит. Должно разместиться 10 (ну или 20, число не имеет значение) новостей. Если у них одинаковый рейтинг, то выбираем по времени поступления (или его может изменить editor на свое усматрение). Но это к теме моего вопроса не имеет отнашения.
Так я и не понял, как решить правильно мою задачу? Первым запросом выбрать 10 строк, определить значение поля score в десятой строке и выполнить update where score < n? Или есть другой вариант?

Спасибо
 

Crazy

Developer
Автор оригинала: proc
Новостной саит. Должно разместиться 10 (ну или 20, число не имеет значение) новостей. Если у них одинаковый рейтинг, то выбираем по времени поступления (или его может изменить editor на свое усматрение). Но это к теме моего вопроса не имеет отнашения.
Это задачи выборки данных. При чем здесь UPDATE?
 

Crazy

Developer
Зачем?

Ok, если тебе приспичило:

1. Сделать select, получив все нужные тебе новости.
2. Сделать update, явно исключив из обработки новости с указанными первичными ключами.

Это -- единственный прямой способ.
 
Сверху