请考虑以下表格结构
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中值的变化自动生成的。
我只是不了解如何制定此查询。
答案 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的方式。