使用列num_rows创建一个视图 – MySQL
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用列num_rows创建一个视图 – MySQL,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1814字,纯文字阅读大概需要3分钟。
内容图文
![使用列num_rows创建一个视图 – MySQL](/upload/InfoBanner/zyjiaocheng/889/e03742057b7047f895bcdca18ae86c57.jpg)
我需要创建一个视图,其中有一个名为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 |
等等…
我可以用一个select生成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 – View的SELECT包含一个变量或参数
我知道我不能在带有视图的select中使用select但我没有看到以我想要的方式执行此视图的其他方式,但我确信有一种方法可以做到这一点但我只是不知道怎么样.可能有功能或程序,但我真的很新,所以我不习惯在mysql中创建函数或过程.
我希望自己明确表示,否则我非常乐意更详细地解释自己.
解决方法:
我找到了一个解决方案:
首先创建一个函数:
delimiter //
CREATE FUNCTION `func_inc_var_session`() RETURNS int
NO SQL
NOT DETERMINISTIC
begin
SET @var := @var + 1;
return @var;
end
//
delimiter ;
然后将@var设置为您要开始的数字.
在这种情况下为零.
SET @var=0;
然后按如下方式创建视图:
CREATE OR REPLACE VIEW myview (place, name, hour, price, counter)
AS SELECT place, name, hour, price, func_inc_var_session()
FROM yourtable
WHERE input_conditions_here;
这里的技巧是你可能在计数器列上看到NULL.如果发生这种情况,请再次将@var设置为您的号码,然后再次执行SELECT *,您将看到正确填充的计数器列.
内容总结
以上是互联网集市为您收集整理的使用列num_rows创建一个视图 – MySQL全部内容,希望文章能够帮你解决使用列num_rows创建一个视图 – MySQL所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。