如何为以下结构制定查询和视图?

时间:2019-06-19 10:32:35

标签: mysql sql database

请考虑以下表格结构

TableA

ColumnA ColumnB ColumnC
Ro1      A         1
Ro1      A         1
Ro7      A         3
Ro2      C         1
Ro3      B         1
Ro3      B         1
Ro6      B         2
Ro4      C         2
Ro5      A         2
  

任务:使用两列(ColumnA,ColumnB)创建上面规定的表,然后开发一个查询/视图,该查询/视图将产生如上图所示的结构,其中ColumnC在视图中而不是在表中找到,并且它的内容是通过分别考虑ColumnA和ColumnB中值的变化自动生成的。

我只是不了解如何制定此查询。

1 个答案:

答案 0 :(得分:1)

您可以使用DENSE_RANK分析功能解决此问题。从8.0版开始,这在MySQL中可用。 Find out more

 select columnA
        , columnB
        , dense_rank() over (partition by columnB order by columnA) as columnC
from tableA 

注意事项:这就是在Oracle中完成的方式。我认为相同的语法也应该在MySQL中工作。但是,文档显示了一些不同之处。因为我现在没有MySQL可玩,所以我在对冲自己的赌注:)

 select columnA
        , columnB
        , dense_rank() over W as columnC
from tableA 
WINDOW w AS (PARTITION BY columnB ORDER BY columnA);

MySQL文档涵盖了to create a view的方式。