我需要創建一個名爲row_num的視圖,其中它將插入行號,就像普通表中的自動增量一樣。使用列創建視圖num_rows - MySQL
我真的很新,所以請與我一起裸露。 比方說,我有這個普通表:
| country | name | age | price |
--------------------------------
| US | john | 22 | 20 |
| France | Anne | 10 | 15 |
| Sweden | Alex | 49 | 10 |
等等......
我想創造的觀點是:
| country | name | price | row_num |
------------------------------------
| US | john | 20 | 1 |
| France | Anne | 10 | 2 |
| Sweden | Alex | 5 | 3 |
等等...
我可以用單個select生成row_num:
SELECT @i:[email protected]+1 AS row_num, testing.country, testing.name, testing.price
FROM testing testing,(SELECT @i:=0) derivedTable
order by name
但我的問題是將上面的查詢與創建視圖的查詢結合起來。 這是組合查詢我想:
CREATE OR REPLACE view vwx (country, name, price, num_row) AS SELECT mytable.country, mytable.name, mytable.price, @i:[email protected]+1 AS row_number
FROM testing testing,(SELECT @i:=0) derivedTable
order by name;
我得到以下錯誤:#1351 - 視圖的SELECT語句包含變量或參數
我知道我不能用一個選擇內選擇有意見,但我沒有看到其他方式來做我想要的方式,但我相信有一種方法可以做到這一點,但我只是不知道如何。可能與功能或程序,但我真的很陌生,所以我不習慣在mysql中創建函數或過程。
我希望自己明確了,否則我很樂意更詳細地解釋自己。
爲什麼沒有像你可以使用的「普通表」那樣的自動增量? – Neal 2013-04-09 01:53:52
因爲我沒有設計該表,並且該表已經存儲了數千和數千條記錄。另外他們不允許我在桌子上改變任何東西,這就是我使用視圖的原因。 – dazito 2013-04-09 01:58:54
啊,還有一個我忘記提到的@Neal細節是視圖是用where子句創建的,我沒有把它放在那裏,因爲我認爲它不是一個重要的細節。 – dazito 2013-04-09 02:21:00