Обновить поле, если ORDER BY равен 1 по убыванию? - PullRequest
0 голосов
/ 30 июня 2011

Есть ли способ сделать это:

Я хочу обновить поле 'rank' в соответствии с местом ORDER BY.

Например: (псевдокод)

If id order by place = 1 then update rank field to place were id=get id


 rank place id

  1     1    5   PC
  2     2    8   MAC

это возможно?

Ответы [ 2 ]

3 голосов
/ 30 июня 2011

Как то так?

UPDATE tbl_name
SET rank = 1
WHERE id = (
     SELECT id
     WHERE condition
     ORDER BY place DESC
     LIMIT 1
)

Или из вашего комментария (я думаю, MySQL http://dev.mysql.com/doc/refman/5.0/en/update.html):

UPDATE tbl_name
SET rank = 10
WHERE id = 9
ORDER BY wins DESC
LIMIT 1

Вы всегда можете сделать SELECT, чтобы проверить, являются ли это записи, которые вы также хотите ОБНОВИТЬ:

SELECT *
FROM tbl_name
WHERE id = (
     SELECT id
     WHERE condition
     ORDER BY place DESC
     LIMIT 1
)

OR

SELECT *
FROM tbl_name
WHERE id = 9
ORDER BY wins DESC
LIMIT 1
0 голосов
/ 30 июня 2011

Некоторые RDBMS имеют псевдостолбец ROWNUM в запросах, которые вы можете использовать для этого.Вы не указали, какую базу данных вы используете, например, Oracle имеет это.

...