将 row_number 与视图一起使用?

Posted

技术标签:

【中文标题】将 row_number 与视图一起使用?【英文标题】:Using row_number with a view? 【发布时间】:2021-03-05 16:47:43 【问题描述】:

我想将row_number 与视图一起使用,以便为每一行分配一个新的顺序id

CREATE VIEW feed AS 
SELECT * FROM (
SELECT id, title FROM books 
UNION ALL
SELECT id, title FROM movies) alias
ORDER BY id

我试过了:

CREATE VIEW feed AS 
SELECT *, ROW_NUMBER() OVER FROM (
SELECT id, title FROM books 
UNION ALL
SELECT id, title FROM movies) alias
ORDER BY id

但运气不好,我哪里错了?

【问题讨论】:

【参考方案1】:

OVER关键字后面必须跟()

CREATE VIEW feed AS
SELECT *, ROW_NUMBER() OVER (ORDER BY id) FROM (
SELECT id, title FROM books
UNION ALL
SELECT id, title FROM movies) alias;

如果您没有 PARTITION 或 ORDER BY,括号可以为空,但在这种情况下,我会将 ORDER BY 放在里面,所以您确定它适用于 ROW_NUMBER()。

【讨论】:

谢谢,如何命名新创建的 id 列?例如view_id 在列后面跟着AS,然后是别名。与定义任何其他列别名相同。

以上是关于将 row_number 与视图一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

Row_number() 和 group by 一起不起作用

SQL基本操作——row_number() over()

INDEX 用于提高包含 ROW_NUMBER OVER PARTITION 的视图的性能

如何在视图中添加 ROW_NUMBER()?

使用 PARTITION BY 和 ROW_NUMBER 时相同的数据,不同的结果

如何在 Hibernate 中使用 row_number 函数编写查询?