作者TeemingVoid (TeemingVoid)
看板Database
标题Re: [SQL ] 请问如何建立一个包含排序栏位的VIEW?
时间Wed Jul 25 01:22:21 2012
※ 引述《l7class》之铭言:
: 假设来源TABLE有二个栏位, 五笔资料
: ITEM. AMOUNT.
: AA 100
: BBB 2020
: C 333
: DD 4004
: E 55
: 那如果换做不排序呢?
: 仅是要产生出一个新的no.
: No. ITEM. AMOUNT.
: 1 AA 100
: 2 BBB 2020
: 3 C 333
: 4 DD 4004
: 5 E 55
: 请问开VIEW的语法为?
如果是 Oracle,请 Google 查询 rownum。
如果是 Microsoft SQL Server,请 Google 查询 Rank(), Row_number() 函数。
如果是 MySQL,就比较麻烦了...
举例来说:
use test;
create table lab (id int primary key, data int);
insert into lab values (1, 10), (2, 20), (3, 30);
以下的语法,可以产生出「列号」的效果:
select id, data, @no := @no + 1 from lab, (select @no := 0) r;
可惜,不能用来建立 VIEW:
create view vTest as
select id, data, @no := @no + 1 from lab, (select @no := 0) r;
会有下列的错误讯息:
View's SELECT contains a variable or parameter
所以,只能采取下列写法,这种写法的缺点在於:如果没编好索引,会很慢:
create view vTest as
select id, Data, (select count(*) from Lab where id <= L.id) as rno
from Lab L order by id ASC;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.134.191