为 MySQL 个值生成 ID 密钥

Generate ID Keys for MySQL Values

我目前有一个 MySQL table 格式如此 -

我想做的是将此数据移动到一个新的 table,但我不想为零件、位置和客户数据使用 VARCHAR,我想为每个数据分配基于自动递增的 ID在价值上。例如,"DEF" 部分的 ID 为 1,"GHI" 部分的 ID 为 2。这就是 table 的样子 -

是否有 SQL 查询来执行此操作?

您希望 partloc 列中的值是自动递增的整数,或者您为 part 和 [=13 输入了 tables =]分别与自动递增整数?

选项-1:

使用与旧名称不同的名称创建新的 table。将条目从旧的 table 映射值插入到新的 table 中,并将其映射到整数。

INSERT INTO new_table_name (part, loc, quan, date, customer)
SELECT CASE
WHEN part = 'DEF' THEN 1
WHEN part = 'GHI' THEN 2
END
, CASE
WHEN loc = '...' THEN 1
WHEN loc = '...' THEN 2
WHEN loc = '...' THEN 3
END
, quan
, date
, customer
FROM original_table

选项-2:

以下是table部分的示例类型:

如果 partloc 的类型 table,您可以这样做...

SELECT part.id
     , loc.id
     , quan
     , date
     , customer
  FROM original_table orig INNER JOIN part prt
        ON orig.part  = prt.value
       INNER JOIN loc
        ON orig.loc = loc.value

据我所知,您描述的table没有办法使用自增功能直接生成值。

创建新的 table 并填充它而不是尝试更改现有的是一种很好的做法(特别是,如果您的应用程序是实时的并且您正在处理客户数据)。

我建议您创建一个新架构,如下所示:

Schema Diagram

您可以使用现有的 table 填充所有新的 table 并将所有主键分配给自动递增。

这有助于您扩展应用程序并轻松维护它。