2016-06-28 91 views
0

我需要在mysql上創建一個視圖,其中查詢具有與變量不同的類別名稱。變量用於爲每個類別生成id。如何在mysql中創建select語句有變量的視圖

這裏是我的sql,任何人都可以幫助我,因爲我無法用這個SQL語法創建視圖。

create view cat1_view as (SELECT distinct categorylev1, 
     @rownum := @rownum + 1 AS id 
    FROM topic t, 
     (SELECT @rownum := 0) r 
group by categorylev1) 

回答

0

是這樣的嗎?

/* 
create temporary table t(can_id int, status varchar(20)); 

insert into t values    
(001 , 'section 1 question 1'),  
(001 , 'section 1 question 2'), 
(001 , 'section 1 question 3'), 
(001 , 'section 1 question 4'),  
(001 , 'section 2 question 1'),  
(001 , 'section 2 question 2'),  
(001 , 'section 2 question 3'),  
(001 , 'section 2 question 4'),  
(001 , 'section 3 question 1'),  
(001 , 'section 3 question 2'),  
(001 , 'section 3 question 3'),  
(002 , 'section 1 question 1'), 
(002 , 'section 1 question 2'), 
(002 , 'section 1 question 3'), 
(002 , 'section 2 question 1'), 
(002 , 'section 2 question 2'), 
(002 , 'section 2 question 3'), 
(002 , 'section 3 question 1'), 
(002 , 'section 3 question 2'), 
(002 , 'section 3 question 3'), 
(002 , 'section 3 question 4'); 

*/ 

select distinct s.canid from 
(
select t.can_id as tcanid, t.status as tstatus , 
      case when @previd <> substring(t.status,1,9) then 
      @sno :=if(@previd <> substring(t.status,1,9),@sno + 1,1) 
      else @sno 
      end as canid 
      ,@previd:=substring(t.status,1,9) prevcanid 
from t, 
(select @sno:= 0) as sn 
,(select @Previd:= '') as p 
order by substring(t.status,1,9) 
) s