好的,我在思考如何描述这个问题时遇到了困难,但基本上我的观点看起来像这样:
CREATE VIEW `dbname`.`v_viewname` AS
select
idTable,
round(val1*(probability*.01),2) as probest,
from table
我想要做的是创建另一个字段(让我们称之为“排名”),它是按照降序排序的时候行的位置。首先,我创建了一个存储过程,它将生成一个表,该表执行此操作并将其转换为派生表,如下所示:
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;
但是因为这必须通过一个视图来完成,我甚至不知道如何获得派生表的加入。另外:如果这种方式不起作用或以任何方式效率低下,那么另一种方法是什么呢?
答案 0 :(得分:1)
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