我需要创建一个自动在结果中添加虚拟行号的视图。这里的图完全是随机的,我要实现的是动态创建的最后一列。
> +--------+------------+-----+
> | id | variety | num |
> +--------+------------+-----+
> | 234 | fuji | 1 |
> | 4356 | gala | 2 |
> | 343245 | limbertwig | 3 |
> | 224 | bing | 4 |
> | 4545 | chelan | 5 |
> | 3455 | navel | 6 |
> | 4534345| valencia | 7 |
> | 3451 | bartlett | 8 |
> | 3452 | bradford | 9 |
> +--------+------------+-----+
查询:
SELECT id,
variety,
SOMEFUNCTIONTHATWOULDGENERATETHIS() AS num
FROM mytable
采用:
SELECT t.id,
t.variety,
(SELECT COUNT(*) FROM TABLE WHERE id < t.id) +1 AS NUM
FROM TABLE t
这不是理想的方式,因为将对返回的每一行执行num值查询。更好的主意是创建一个NUMBERS
表,其中的一列包含一个从一个开始的数字,然后递增到一个非常大的数字,然后NUMBERS
以类似于下面的变量示例的方式联接和引用该表。
您可以定义一个变量以获得伪行号功能,因为MySQL没有任何排名函数:
SELECT t.id,
t.variety,
@rownum := @rownum + 1 AS num
FROM TABLE t,
(SELECT @rownum := 0) r
SELECT @rownum := 0
定义了变量,并将其设置到零。 r
是一个子查询/表别名,因为如果不为子查询定义别名,即使不使用别名,也会在MySQL中出错。如果这样做,将会收到1351错误,因为由于design,您无法在视图中使用变量。该错误/功能的行为记录在这里。
本文向大家介绍详解Mysql中的视图,包括了详解Mysql中的视图的使用技巧和注意事项,需要的朋友参考一下 视图: mysql中的视图,视图与表有很多相似的地方,视图也是由若干个字段以及若干条记录构成,视图也可以作为select语句的数据源。 视图中保存的仅仅是一条select语句,保存的是视图的定义,并没有保存真正的数据。视图中的源数据都来自于数据库表,数据库表称为基本表或者基表,视图称为虚表。
更多信息
问题内容: 我有一张桌子: 可以通过管理员更改订单,因此可以更改订单列。在管理方面,我有一个带有选择框的表单,用于输入数据库。在插入的列之后,我应该使用哪种查询来对+1进行排序。 我想以使服务器负载最小的方式执行此操作,因为此表当前有1200行。这是保存表顺序的正确方法还是有更好的方法? 任何帮助表示赞赏 编辑: 这是我想要做的,这要归功于itsmatt: 想要将第1行重新排序为第1100行之后,
本文向大家介绍从视图中删除行会从MySQL的基表中删除行吗?,包括了从视图中删除行会从MySQL的基表中删除行吗?的使用技巧和注意事项,需要的朋友参考一下 是的,从视图中删除行从基表中删除行。让我们通过创建一个新表来了解这一点。创建表的查询如下 使用insert命令在表中插入一些记录。查询如下- 使用select语句显示表中的所有记录。查询如下- 以下是输出 让我们创建一个视图。创建视图的查询如下
问题内容: 我有一张约有100,000个用户的表。 第一种情况: 当我为上述查询做一个解释计划时,我得到的费用为5200 第二种情况: 当我对第二个查询做一个解释计划时,我得到的费用为100,000。 视图中的where子句如何工作?在视图检索所有行之后是否应用where子句?如何解决此问题? 问题答案: 这是关于已使用的视图算法的。 该 合并 算法行之有效最表的索引和诸如此类的东西-的 不是Te
主要内容:基本语法,删除视图删除视图是指删除 MySQL 数据库中已存在的视图。删除视图时,只能删除视图的定义,不会删除数据。 基本语法 可以使用 DROP VIEW 语句来删除视图。 语法格式如下: DROP VIEW <视图名1> [ , <视图名2> …] 其中: 指定要删除的视图名。DROP VIEW 语句可以一次删除多个视图,但是必须在每个视图上拥有 DROP 权限。 删除视图 【实例】删除 v_students_