是否可以在 mysql 视图中创建自动增量 id 列?

Posted

技术标签:

【中文标题】是否可以在 mysql 视图中创建自动增量 id 列?【英文标题】:Is it possible to create auto increment id column in mysql view? 【发布时间】:2013-06-19 08:10:34 【问题描述】:

我在 mysql 中创建了一个视图。但现在我的要求是在该视图中创建一个应该自动递增的 Id 列。

我目前的看法是:-

CREATE VIEW pending_assign_report_view AS
  select cg.group_name,c.client_name, wt.work_type,p.Minor_worktype, ay.year,aev.emp_name,ep.Date_assigned_on
from employee_project ep,active_employee_view aev, project p, client_group cg, client c,work_type wt,assessment_year ay
where ep.task_status_id=1 and ep.username=aev.username and ep.project_id=p.project_id and p.Year_id=ay.Year_id
and p.Client_group_id=cg.client_group_id and p.Client_id=c.Client_id and p.Work_type_id=wt.Work_type_id
order by cg.group_name,c.client_name, aev.emp_name;

现在我希望 Id 列作为第一列,本质上应该是 auto_increment。我该怎么做? 提前致谢。

【问题讨论】:

顺便说一句,我认为这个问题是重复的:***.com/questions/1964811/row-rank-in-a-mysql-view/… 简答:否。***.com/questions/2808759/… 重复***.com/questions/2808759/… 【参考方案1】:

你可以在你的 SELECT 中用类似的东西来模拟它:

SELECT @rownum:=@rownum+1 AS rownum, dummy.*
FROM (SELECT @rownum:=0) r, dummy;

【讨论】:

注意:这将枚举结果集中的所有行,与实际查询的顺序无关! 感谢您的快速回复。但是当我创建视图时,mysql 给出了错误:- 视图的选择包含一个变量或参数。【参考方案2】:

数据库中的视图是我们数据库中一些数据的镜像副本。在现实中它是不存在的。它与主表具有相同的结构

所以它的结构不能改变

【讨论】:

谢谢 Lokesh。我们可以创建一个函数来执行此操作吗?【参考方案3】:

您可以使用“UIID()”函数为您提供唯一的(字母数字)标识。

看看这个:https://***.com/a/45963661/6083044

【讨论】:

此解决方案有一个主要缺点:每次访问视图时 UUID 都会发生变化。 (顺便说一句,不要用相同的答案回复重复的问题,标记/投票以将较新的问题关闭为与最旧的问题重复。)【参考方案4】:

select @rownum:=@rownum+1 'autoID',m.mediaThumbnailUrl , q.surveyID from (SELECT @rownum:=0) r, media m join question q on m.mediaAutoID = q.backgroundImageID ;

【讨论】:

以上是关于是否可以在 mysql 视图中创建自动增量 id 列?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 自动增量是如何工作的?

MySQL 后端和访问 (.accdb, 2013) 前端自动增量问题

MYSQL 自动增量按字段分类

如何在php中添加自动增量主键

MySQL 和自动增量一致性

laravel 迁移在不是主要的时候使用自动增量