当前位置: 首页 > 面试题库 >

使用num_rows列创建视图-MySQL

孔逸春
2023-03-14
问题内容

我需要创建一个视图,该视图具有一个名为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中创建函数或过程。

我希望我能说清楚自己,否则我很乐意进一步解释自己。


问题答案:

我找到了一个解决方案:

首先创建一个函数:

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
*,您会看到正确填充了counter列。



 类似资料:
  • 视图概述 视图作为MVC模式中的终端环节,在web编程中负责dom结构的展示。grace 使用 php作为“天然模板“,您不必再去学习枯燥无聊的模板语法,系统更不必浪费资源去完成复杂的解析工作! 视图文件创建及命名规则 视图文件命名 : 1、控制器名称_方法名称.php //此种命名系统会进行自动展示 2、视图名称.php //需要手动调用 视图文件位置 : /分组文件夹/views/对应视图文件

  • 主要内容:基本语法,创建基于单表的视图,创建基于多表的视图,查询视图创建视图是指在已经存在的 MySQL 数据库表上建立视图。视图可以建立在一张表中,也可以建立在多张表中。 基本语法 可以使用 CREATE VIEW 语句来创建视图。 语法格式如下: CREATE VIEW <视图名> AS <SELECT语句> 语法说明如下。 :指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。 :指定创建视图的 SELECT 语句,可用于查询多个基础表或源

  • 我正在尝试在Swiftui2.0Xcode 12.4中创建一个WebView视图,但它太新了,我找不到答案和最佳实践的好例子。对于下面的代码,我得到以下错误。 类型SwiftUIWebView不符合协议UIView表示 此外,配置设置已更改,我无法启用。正确地允许使用JavaScript。尝试将其添加到“perfs”会触发一个错误,抱怨不喜欢Bool。

  • 问题内容: 是否有“ Pythonic”方式(我的意思是,没有“ pure SQL”查询)来使用SQLAlchemy定义SQL视图? 问题答案: 更新: 又见SQLAlchemy的使用配方这里 据我所知,开箱即用不支持创建(只读非实例化)视图。但是在SQLAlchemy 0.7中添加此功能非常简单(类似于我在此处给出的示例)。您只需要编写一个编译器扩展即可 。使用此扩展名,您可以编写(假设这是一个

  • 现在,我看到的所有示例都是表单/场景是在代码中生成的,并且treeview绑定到那个控件上的................................................................

  • 主要内容:简单的视图视图功能,或简称"view",是一个简单的Python函数,它接受一个Web请求,并返回一个Web响应。此响应可以是 Web页的HTML内容,或重定向,或404错误,或XML文档,或图像/片等。例如:使用视图创建页面,请注意需要将一个视图关联到一个URL,并把它看作一个网页。 在Django中,视图必须在应用程序的 views.py 文件中创建。 简单的视图 我们将在 myapp 创建一个简单的视