MySQL: получить положение строк в отсортированной таблице в представлении - PullRequest
0 голосов
/ 13 июля 2011

Хорошо, у меня возникли проблемы, подумайте, как описать эту проблему, но в основном у меня есть представление, которое выглядит следующим образом:

CREATE VIEW `dbname`.`v_viewname` AS
select
idTable,
round(val1*(probability*.01),2) as probest,
from table

И что я хочу сделать, это создать другое поле (давайте назовем его«rank») - это позиция строки, когда она сортируется по критерию в порядке убывания.Сначала я создал хранимую процедуру, которая сгенерирует таблицу, которая сделает это и превратит ее в производную таблицу, которая выглядит следующим образом:

set @rownum := 0;

select * from (

select @rownum := @rownum+1 AS rank, idTable

from table order by (val1*probability) desc )

as derived_table;

, поэтому вопрос заключается в том, как мне соединить эту производную таблицу с моейтаблица, с которой я читаю, на мой взгляд?Была бы таблица в подпрограмме или что-то такое, что я бы использовал:

table join inner derived_table on table.idTable = derived_table.idTable;

, но поскольку это должно быть сделано с помощью представления, я даже не знаю, как получить производную таблицу для объединения.Также: если этот способ не будет работать или неэффективен, каким будет альтернативный метод?

1 Ответ

1 голос
/ 13 июля 2011
select tbl.*, @rownum := @rownum+1 AS rank
from (select
      idTable,
      round(val1*(probability*.01),2) as probest,
      from table
      order by probest desc) tbl
      ,(select @rownum := 0) init_vars
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...