如何在视图中添加ROW_NUMBER()?[英] How to add ROW_NUMBER() in a view?

本文是小编为大家收集整理的关于如何在视图中添加ROW_NUMBER()?的处理方法,想解了如何在视图中添加ROW_NUMBER()?的问题怎么解决?如何在视图中添加ROW_NUMBER()?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

在 PostgreSQL 8.4 中,我想从 3 个带有 id 的表创建一个视图.所以我想在我看来有这个结构:

num serial,
name_dispatcher character varying(250)
the_geom geometry

我可以从表中选择 name_dispatcher 和 the_geom:

 CREATE VIEW lineView
      AS SELECT 'name' AS name_dispatcher, the_geom
      FROM line1
      UNION
      SELECT 'name' AS name_dispatcher, the_geom
      FROM line2
      UNION
      SELECT 'name' AS name_dispatcher, the_geom
      FROM line3

如何在视图中创建num列?

更新

我找到了解决办法:

ROW_NUMBER() OVER(ORDER BY lineView.voltage)

但我不知道如何在ALTER VIEW中使用它.怎么放进去?

推荐答案

您不能使用 ALTER VIEW 删除或添加列.我引用 关于 ALTER VIEW 的手册:

<块引用>

ALTER VIEW 改变视图的各种辅助属性.(如果你要修改视图的定义查询,请使用 CREATE OR REPLACE VIEW.)

但是一个简单的 CREATE OR REPLACE VIEW 并不能解决问题.手册中的另一句话:

<块引用>

新查询必须生成与现有视图查询

所以 DROP 和 CREATE 视图:

DROP VIEW lineview;

CREATE VIEW lineview AS
SELECT *, row_number() OVER(ORDER BY ???) AS num
FROM (
   SELECT 'name' AS name_dispatcher, the_geom
   FROM line1

   UNION
   SELECT 'name' AS name_dispatcher, the_geom
   FROM line2

   UNION
   SELECT 'name' AS name_dispatcher, the_geom
   FROM line3
   ) x

我使用子查询是因为我假设您想将 row_number() 添加到所有行.您的问题在这方面含糊不清.
如果您只想要一个没有特定顺序的唯一 ID,请使用 row_number() OVER().

本文地址:https://www.itbaoku.cn/post/1763789.html