2016-04-30 56 views
0

我有一个PostgreSQL 9.4.1表,像这样...PostgreSQL的。基于“用户名”栏重新排序行字母descendat

--------+-----------+-----------+---------------- 
serial | username | userprod | prodprice 
--------+-----------+-----------+---------------- 
1  | Zack  | candy | 44$ 
2  | Tom  | shoes | 54$ 
3  | Steve | pants | 23$ 
4  | Paul  | hood  | 65$ 
5  | John  | cap  | 23$ 
6  | Zack  | tshirt | 56$ 
7  | Tom  | pullover | 21$ 
8  | Steve | socks | 42$ 
9  | Paul  | shorts | 23$ 
10  | John  | masc  | 21$ 

行由串行列排序, 我怎么能显示同一个表,但是,基于“用户名”列按字母顺序降序对所有行进行重新排序?我希望Postgres能够在单独的桌面上实时自动执行此操作。我想我可以使用视图?我怎样才能做到这一点?

+1

阅读关于'ORDER BY'子句:http://www.w3schools.com/sql/sql_orderby.asp – krokodilko

+2

表中的行不是***“排序”。您在不使用'order by'时看到的任何订单纯属巧合。如果您想要查看它们,请在选择时使用'order by'。这是只有***才能获得有保证的订单。 http://www.postgresql.org/docs/current/static/sql-select.html#SQL-ORDERBY –

+0

创建视图怎么办?可以自动完成? – litu16

回答

1

当然,您可以使用VIEW来返回有序的行。

CREATE VIEW v_tbl_username AS 
TABLE tbl ORDER BY username; 

,另一个用于您的行由serial列排序:

CREATE VIEW v_tbl_serial AS 
TABLE tbl ORDER BY serial; 

@a_horse's comment解决您的基本误解。

该订单将保留,除非它被外部查询中的另一个ORDER BY否决。

视图与early binding一起使用:仅包含在创建时出现的列。 SELECT * FROM tblTABLE tbl已解析为当前现有列的列表。如果稍后更改了基础表,那么它不会自动级联到视图。

+0

谢谢erwin,我知道我可以使用'SELECT * FROM tbl_ ORDER BY ircusername ASC,stmtserial ASC;'我只是不知道如何创建它到VIEW – litu16