我目前有一个这样格式化的MySQL表-
我想做的是将这些数据移动到新表中,但是我不想根据零件,位置和客户数据使用VARCHAR,而是根据值分配每个ID的自动递增。例如,部分“ DEF”的ID为1,部分“ GHI”的ID为2。这就是表格的样子-
是否有SQL查询可以做到这一点?
答案 0 :(得分:3)
您希望part
和loc
列中的值是自动递增的整数,或者您分别为part
和loc
使用自动递增的类型表整数?
使用与旧表不同的名称创建新表。您可以将条目从旧表映射值插入到新表中,然后映射到整数。
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
以下是零件的样本类型表:
如果您有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
据我所知,无法使用自动递增功能直接为您描述的表生成值。
答案 1 :(得分:0)
创建新表并填充它是一个好习惯,而不是尝试更改现有表(特别是如果您的应用程序是活动的并且您正在处理客户数据)。
我建议您创建一个新的架构,如下所示:
您可以使用现有表填充所有新表,并将所有主键分配给自动增量。
这有助于您扩展应用程序并轻松维护它。