我目前有一个这样格式化的 MySQL 表 -
我想做的是将这些数据移动到一个新表中,但我不想为零件、位置和客户数据使用 VARCHAR,而是想根据值为它们分配自动递增的 ID。例如,“DEF”部分的 ID 为 1,“GHI”部分的 ID 为 2。这就是表格的样子 -
是否有执行此操作的 SQL 查询?
最佳答案
您希望 part
和 loc
列中的值是自动递增的整数,或者您有 part
和 loc
分别与自动递增的整数?
选项 1:
使用与旧表不同的名称创建新表。将旧表中的条目插入到新表中,将值映射到整数。
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:
以下为零件类型表示例:
如果您有part
和loc
的类型表,您可以这样做...
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
据我所知,您描述的表格无法使用自增功能直接生成值。
关于mysql - 为 MySQL 值生成 ID 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51505634/