编辑:请在下面查看我的编辑
根据我之前在这里提出的问题link,我决定创建一个变量和一个函数来返回该变量并在 create view 语句中使用该函数。
因此,我将变量从零开始:
SET @auxvar := 0;
然后我声明函数:
create function auxfunc()
returns INTEGER DETERMINISTIC NO SQL return @auxvar+1;
然后我做:
CREATE OR REPLACE VIEW vwaux (mac, ip, num_row)
AS SELECT testing.mac, testing.ip, auxfunc() AS row_number
FROM testing
order by ip;
但是生成的视图有以下数据:
| mac | ip | row_number |
----------------------------------------
| s23Ssad2 | 192.168.1.1 | NULL |
| sd57shgd | 192.168.1.88 | NULL |
| adfsfy65 | 192.168.1.91 | NULL |
| at56ss34 | 192.168.1.92 | NULL |
依此类推......但我期待的是1、2、3、4......它有NULL。关于如何修复这个 NULL 的任何想法?
编辑部分: ------------------
我已经设法摆脱了 NULL 但仍然没有达到我需要去的地步。我将函数更改为接受输入参数,并在函数内部将其递增一个单位。
这是新功能:
CREATE FUNCTION auxfunc(param INT) RETURNS int(11)
NO SQL
DETERMINISTIC
begin
set param = param +1;
return param;
end
然后我将视图创建为:
CREATE OR REPLACE VIEW vwaux (mac, ip, num_row)
AS SELECT testing.mac, testing.ip, auxfunc(0) AS row_number
FROM testing
order by ip;
但是我得到的不是NULL,而是'1'。像这样:
| mac | ip | row_number |
----------------------------------------
| s23Ssad2 | 192.168.1.1 | 1 |
| sd57shgd | 192.168.1.88 | 1 |
| adfsfy65 | 192.168.1.91 | 1 |
| at56ss34 | 192.168.1.92 | 1 |
还是不是1、2、3、4、5、6……