我有这样的观点:
CREATE VIEW MyView AS
SELECT Column FROM Table WHERE Value = 2;
Run Code Online (Sandbox Code Playgroud)
我想让它更通用,它意味着将2变为变量.我试过这个:
CREATE VIEW MyView AS
SELECT Column FROM Table WHERE Value = @MyVariable;
Run Code Online (Sandbox Code Playgroud)
但MySQL不允许这样做.
我找到了一个丑陋的解决方法:
CREATE FUNCTION GetMyVariable() RETURNS INTEGER DETERMINISTIC NO SQL
BEGIN RETURN @MyVariable; END|
Run Code Online (Sandbox Code Playgroud)
然后观点是:
CREATE VIEW MyView AS
SELECT Column FROM Table WHERE Value = GetMyVariable();
Run Code Online (Sandbox Code Playgroud)
但它看起来很糟糕,而且用法也很糟糕 - 我必须在每次使用视图之前设置@MyVariable.
有没有解决方案,我可以像这样使用:
SELECT Column FROM MyView(2) WHERE (...)
Run Code Online (Sandbox Code Playgroud)
具体情况如下:我有一个表存储有关被拒绝请求的信息:
CREATE TABLE Denial
(
Id INTEGER UNSIGNED AUTO_INCREMENT,
PRIMARY KEY(Id),
DateTime DATETIME NOT NULL,
FeatureId MEDIUMINT …Run Code Online (Sandbox Code Playgroud)