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

如何在MySQL中生成动态序列表?

章越
2023-03-14
问题内容

我正在尝试在MySQL中生成序列表,以便可以从获得唯一ID last_insert_id

问题是我需要动态地多个序列。

首先,我创建了一个表:

CREATE TABLE `sequence` (
  `label` char(30) CHARACTER SET latin1 NOT NULL,
  `id` mediumint(9) NOT NULL DEFAULT '0',
  PRIMARY KEY (`label`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

然后尝试使用http://dev.mysql.com/doc/refman/5.0/en/information-
functions.html#function_last-insert-
id中的

示例获取编号

UPDATE sequence SET id = LAST_INSERT_ID(id + 1) WHERE label = 'test';
SELECT LAST_INSERT_ID();

一段时间后,我意识到我还需要安全地为新标签生成行。因此,我将此架构更改为:

CREATE TABLE `sequence` (
  `label` char(30) CHARACTER SET latin1 NOT NULL,
  `id` mediumint(9) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`label`,`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

我只是放弃了using WHERE子句来更新其ID。

INSERT INTO sequence (label) values ( ? )
SELECT LAST_INSERT_ID()

这是正确的方法吗?我想知道是否有更好的解决方案。


问题答案:

MyISAM引擎将为您做到这一点-

表定义:

CREATE TABLE `sequence` (
  `label` char(30) CHARACTER SET latin1 NOT NULL,
  `id` mediumint(9) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`label`,`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

填充表:

INSERT INTO sequence VALUES ('a', NULL); -- add some 'a' labels
INSERT INTO sequence VALUES ('a', NULL);
INSERT INTO sequence VALUES ('a', NULL);

INSERT INTO sequence VALUES ('b', NULL); -- add another labels 'b'
INSERT INTO sequence VALUES ('b', NULL);

INSERT INTO sequence VALUES ('a', NULL); -- add some 'a' labels
INSERT INTO sequence VALUES ('a', NULL);

显示结果:

SELECT * FROM sequence;
+-------+----+
| label | id |
+-------+----+
| a     |  1 |
| a     |  2 |
| a     |  3 |
| a     |  4 |
| a     |  5 |
| a     |  6 |
| b     |  1 |
| b     |  2 |
+-------+----+


 类似资料:
  • 问题内容: 我需要使用表/结果集/任何包含整数(包括整数)的联接。是否有一种简单的方法来实现这一目标而不仅仅是构建表? (顺便说一句,这种类型的结构称为“ 元查询 ”吗?) 被限制在合理的范围内(<1000) 问题答案: MySQL中没有序列号生成器(CREATE SEQUENCE )。最近的是,它可以帮助您构造表。

  • 我使用以下命令创建了一个名为hibernate_sequence的序列 这是我的hibernate注释dao 为了向表中插入新记录,hibernate正在生成错误的查询以获取下一个序列值。。Hibernate总是发出此查询。。不管我做什么。。 我使用的是oracle 10G,它总是报告以下错误。。 发出的查询应该是

  • 问题内容: 我有一张桌子:student_marks 预期产量: 使用mysql用户定义的变量,可以使用查询来完成: 在不使用用户定义变量的情况下,有什么方法可以在msyql中实现? 问题答案: 基于您不想使用用户定义变量的原因,因为要避免有两个查询,一个用于初始化,一个用于使用它,您可以使用以下方法:

  • 问题内容: 我正在尝试根据此文档http://wtforms.simplecodes.com/docs/1.0.2/specific_problems.html#dynamic-form-composition在WTForms中生成具有动态字段的表单 我有这个子窗体类,它允许用户从列表中选择要购买的物品: 购物商品将有多个类别,因此我想根据用户选择的类别生成一个动态选择字段: 但出现以下错误: 我

  • 问题内容: 我在数据库中有几条记录,它们想要形成如下URL: 该会从数据库中拉出。 有什么办法可以在flask中取出吗? 问题答案: 你可以将变量名放在views.py函数中。例如: 为了使数据库信息显示在你的站点上,你需要将参数传递到模板中。因此,在模板中,你将引用以下参数: 然后,当你访问mysite.com/post/anything_here时,“ anything_here”将进入你的函

  • 问题内容: 我正在抓取一个可能包含很多的网站,例如: 我想像一样填充,并像在爬网期间那样从URL中提取项目。 我可以用来实现此功能吗?以及如何在抓取过程中动态生成? 问题答案: 动态生成URL的最佳方法是重写Spider 的方法: