我有一个从中创建视图的MySQL数据库。是否可以为视图中的每一行添加一个自动递增的ID?使用自动递增的id列创建MySQL视图
我试图
CREATE ALGORITHM=UNDEFINED DEFINER=`database_name`@`%` SQL SECURITY DEFINER VIEW `MyView` AS
set @i = 0;
select @i:[email protected]+1 as `id`
...
但并不在一个视图中工作。
我有一个从中创建视图的MySQL数据库。是否可以为视图中的每一行添加一个自动递增的ID?使用自动递增的id列创建MySQL视图
我试图
CREATE ALGORITHM=UNDEFINED DEFINER=`database_name`@`%` SQL SECURITY DEFINER VIEW `MyView` AS
set @i = 0;
select @i:[email protected]+1 as `id`
...
但并不在一个视图中工作。
此,
CREATE VIEW view_wp_postmeta AS(
SELECT (
SELECT count(meta_id) +1
FROM wp_postmeta
AS vtmp
WHERE vtmp.meta_id < pm.meta_id
) AS vtmp_id, pm. *
FROM wp_postmeta AS pm
ORDER BY pm.meta_id DESC
)
在WordPress中meta_id = AUTO_INCREMENT在wp_postmeta TABLE,我为此创建图,其中在DESC顺序VIEW_ID行为就像AUTO_INCREMENT。
例如, 在表 wp_postmeta - > meta_id [3,5,6,10,2,11] 这将在VIEW 出现 view_wp_postmeta - > 的view_id [6,5,4 ,3,2,1]
我知道这个问题很陈旧,但为了防止别人遇到这个问题,还有另一种方法。
重要说明:此方法是有效,只要自动增量是不是真的很重要,所以你只需要在视图中的行的唯一标识:
您可以使用UUID()函数,它为您提供了独特的字母数字标识符。查看文档在mysql-reference-manual
因此,你可以创建一个视图这样的:
Create view my-view AS
Select UUID() as 'id', t.name, t.value
from table t
....
该解决方案有一个主要缺点:每次访问视图时,UUID都会发生变化。 – Veve 2017-08-31 09:56:17
谢谢你的回答!由于缺乏答案,我猜测的原因很多...... – 2010-11-15 20:03:14