为 MySQL 个值生成 ID 密钥
Generate ID Keys for MySQL Values
我目前有一个 MySQL table 格式如此 -
我想做的是将此数据移动到一个新的 table,但我不想为零件、位置和客户数据使用 VARCHAR,我想为每个数据分配基于自动递增的 ID在价值上。例如,"DEF" 部分的 ID 为 1,"GHI" 部分的 ID 为 2。这就是 table 的样子 -
是否有 SQL 查询来执行此操作?
您希望 part
和 loc
列中的值是自动递增的整数,或者您为 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部分的示例类型:
如果 part
和 loc
的类型 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 并将所有主键分配给自动递增。
这有助于您扩展应用程序并轻松维护它。
我目前有一个 MySQL table 格式如此 -
我想做的是将此数据移动到一个新的 table,但我不想为零件、位置和客户数据使用 VARCHAR,我想为每个数据分配基于自动递增的 ID在价值上。例如,"DEF" 部分的 ID 为 1,"GHI" 部分的 ID 为 2。这就是 table 的样子 -
是否有 SQL 查询来执行此操作?
您希望 part
和 loc
列中的值是自动递增的整数,或者您为 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部分的示例类型:
如果 part
和 loc
的类型 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 并将所有主键分配给自动递增。
这有助于您扩展应用程序并轻松维护它。