创建自动增量与前文
我有使用MySQL,我想在视图表中创建自动递增我的项目的麻烦,我创建sintax像这样的:创建自动增量与前文
SELECT
concat(@AI:= @AI + 1,`code`)
FROM
`TEST TABLE`, (SELECT @AI:=0) as `AI`
为什么,如果我在第一个加语法线像这样的:
CREATE VIEW `TEST VIEW` as
我有一些错误:
如何修复它,或者其他方法?感谢您的提前!
如果您使用的是Oracle,则可以使用名为sequence
的对象来达到此目的。但是,谁拥有Oracle许可证的资金?
如果你需要一系列的数字和您使用的MariaDB的叉子,你可以做
SELECT seq FROM seq_0_to_99
或一些这样的使用顺序引擎的。
如果你需要MySQL中的持续序列号,这是一个解决方法。这是一个杂牌组装电脑:如果你创建下表:
CREATE TABLE sequence ( /*MySQL*/
sequence_id BIGINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`sequence_id`)
)
然后发出后,其他三个疑问之一:
INSERT INTO sequence() VALUES(); /*MySQL*/
DELETE FROM sequence WHERE sequence_id < LAST_INSERT_ID();
SELECT LAST_INSERT_ID() AS sequence;
第三个查询是保证返回一个唯一的序列号。即使您有数十个不同的客户端程序连接到您的数据库,这种担保仍然有效。 (DELETE查询只会使这个没有意义的表占用太多空间。)
您收到的错误消息说明您无法在视图中使用会话变量。
好的导师!谢谢! –
和为什么我downvote,我错了queston或其他? –
https://dev.mysql.com/doc/refman/5.7/en/create-view.html说:
视图定义受到以下限制:
- SELECT语句不能引用系统变量或用户定义的变量。
您无法为查询创建视图。你必须直接执行查询。我唯一可以做的其他建议是为查询开发一个存储过程。
听起来好像你想为查询结果创建一个行号,而不是自动增量列存储在表中。
MySQL 8.0.2增加了窗口函数ROW_NUMBER()
,但是8.0版仍在开发中,因为我们正在编写这个功能。也许在2018年它将以GA的身份完成并发布。
哇,好消息,但太高版本,如果我使用这个,谢谢@ bill karwin –
为什么我已经投票? –
不要担心downvotes。当人们通过阅读错误信息提出看起来可能会有问题的问题时,人们通常会收到这些问题。 –