Answers:
您应该能够将row_number()函数用作视图中的一列。这适用于Postgres 8.4或更高版本。
http://www.postgresql.org/docs/current/static/functions-window.html
SELECT * FROM
( SELECT
ROW_NUMBER() OVER (ORDER BY column_to_sort_by ASC) AS ROW_NUMBER,
Col1, Col2
FROM table_name
) myview_name
这应该适用于大多数数据库,包括SQL Server,Oracle和MySQL。
row_number() OVER() AS "id"
不设置ORDER
过多列
row_number
实际上是一个随机值。您不能依靠它在SELECT
s 之间保持一致,尤其是当基础数据更改时。
对于旧版本的PostgreSQL(<= 8.3),这是另一种解决方案。在此示例中,我将另一个列名称vid
用作“视图ID”。
首先,创建一个序列。使用CYCLE
以便在到达序列末尾时循环播放。
CREATE SEQUENCE myview_vid_seq CYCLE;
现在,创建一个使用该序列的VIEW:
CREATE OR REPLACE VIEW myview AS
SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
FROM mytable;