update limit n,-1

  • Автор темы Автор темы proc
  • Дата начала Дата начала

proc

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

Привет всем!

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

Автор оригинала: proc
Как мне сделать update всех строк, начиная с n?
Никак. Тебе, кстати, кто-то обещал, что update обрабатывает строки "сверху вниз" (что бы не значил этот термин)?
 
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 строк.
 
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 строк.
Еще раз. Медленно. В реляционных базах нет ни верхних, ни нижних строк.
 
2Crazy
1. В какой версии MySQL в UPDATE поддерживается "ORDER BY"?
Самое удивительно что он действительно поддерживается начиная с 4.0.0.

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

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

Как мы видим, мой первый вопрос привел человека к ORDER BY. Может быть, после второго он вчитается в документацию и вздрогнет.
 
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
 
Замечательно. А если у тебя в таблице 9 записей с score=100, 20 записей с score=10 и 100 записей с score=1, то ты готов обратобать 1 запись с score=100, а остальные 19 (неважно какие) из обработки исключить? Оригинальный алгоритм.

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

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

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

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

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

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