我需要创建一个视图,其中有一个名为 row_num 的列,它将在其中插入行号,就像普通表中的自动增量一样。
假设我有这张普通的桌子:
| 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 |
等等...
我可以通过一次选择生成 row_num:
SELECT @i:=@i+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:=@i+1 AS row_number
FROM testing testing,(SELECT @i:=0) derivedTable
order by name;
我收到以下错误:#1351 - 视图的 SELECT 包含变量或参数
我知道我不能在带有视图的选择中使用选择,但我看不到其他方法可以按照我想要的方式执行此视图,但我确信有办法做到这一点,但我只是不知道如何。可能是函数或过程,但我对它们真的很陌生,所以我不习惯在 mysql 中创建函数或过程。
我希望我说清楚了,否则我很乐意更详细地解释自己。