当前位置: 首页 > 知识库问答 >
问题:

在MySQL中插入到另一个表时,使用自动增量连接多个表的值

程谦
2023-03-14

MySQL中有两个表,如下所示:

请注意,category_id是类别表中category_key的FOREIGN KEY

我想在第三个表(名为“catalog”)中插入目录项,这样每个目录ID都将从其类别和子类别ID生成,每个类别子类别ID的串联编号都会自动递增。

例如:

假设“categories”表中有一行的categories_键为“ABC”,而“sub_categories”表中也有一行的sub_categories_键为“EFG”,那么目录表中的一行的键为“ABC-EFG-0001”,同一子类别中的另一行的键为“ABC-EFG-0002”,依此类推。

而对于其他ID值,例如.category_id="OMG"和sub_category_id="YYY",数字的增量将从1开始,因此ID将是"OMG-YYY-0001"。

我可以举一个插入查询的例子吗?

谢谢

共有1个答案

高经艺
2023-03-14

您可以使用ROW\u NUMBER()(在MySQL 8.0中提供)来分配数字,并使用LPAD()格式化数字。请注意,您不需要使用表类别,因为所有相关信息都可以在子类别中找到(但如果您确实需要它,您只需添加一个联接)。

INSERT INTO catalog
SELECT 
    sc.*,
    CONCAT(
        category_key,
        '-',
        sub_category_key,
        '-',
        LPAD(
            ROW_NUMBER() OVER(PARTITION BY category_key, sub_category_key ORDER BY sub_category_key),
            4,
            0
        ) 
    )
FROM sub_categories sc
 类似资料:
  • 您好,我尝试使用mysqli从第一个表中获取autoincrement id,然后插入到第二个表中,这是我为每个表设计的数据库 表用户 表siswa 这就是我尝试过的 数据插入到用户表中,但不插入到siswa表中,对此有何建议? 编辑:被忽略的变量只($jkortu)现在修复,谢谢

  • 例如,我有一个包含2个表的数据库。第一个表(表 1)包含: userId 是我的主键,它是自动递增的。我的下一个表(表2)有: userId(来自表2)是我引用表1(userId)的外键。是否有一种方法可以插入到两个表的所有信息中,并使表2中的用户ID自动从表1中获取它引用的主键?或者,我必须为每个表执行多个插入,并显式地使外键具有相同的值。

  • 问题内容: 我知道这是行不通的,以各种形式尝试过并且一直失败。实现以下结果的最简单方法是什么? 这对于自动化项目非常有用。谢谢! 问题答案: 使用准备好的语句:

  • 问题内容: 我想知道是否有一种方法可以完全在sql中执行此操作: 注意: q1将返回约3万行。 有什么办法可以在直式sql中完成上述操作?要直接从一个表(基本上是原始数据表)中提取数据并插入到另一个表(基本上是已处理数据表)中? 问题答案:

  • 问题内容: 我想从一个表中读取所有数据,然后将一些数据插入到另一个表中。我的查询是 但我有一个错误 请帮我。 问题答案: 您可以使用INSERT … SELECT语法。请注意,您可以在SELECT部分​​中直接引用“ 1”。

  • 问题内容: 我正在使用php和mysql。我有一个表,其中id列设置为自动递增作为主键。我正在尝试添加另一个名为sort_order的列。插入行后,sort_order列应自动递增。然后,用户将能够更改sort_order值。但是mysql不允许多于一列的自动递增? 自动递增sort_order值的最佳方法是什么? 受欢迎的要求,更多的解释。 在管理区域中,用户将具有类别列表。用户可以使用java