mysql - 为 MySQL 值生成 ID 键

标签 mysql sql amazon-web-services mysql-workbench amazon-rds

我目前有一个这样格式化的 MySQL 表 -

enter image description here

我想做的是将这些数据移动到一个新表中,但我不想为零件、位置和客户数据使用 VARCHAR,而是想根据值为它们分配自动递增的 ID。例如,“DEF”部分的 ID 为 1,“GHI”部分的 ID 为 2。这就是表格的样子 -

enter image description here

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

最佳答案

您希望 partloc 列中的值是自动递增的整数,或者您有 partloc 分别与自动递增的整数?

选项 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:

以下为零件类型表示例:

enter image description here

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

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/

相关文章:

amazon-web-services - 在 AWS ECS 上的 Docker 镜像中运行 CloudWatch 代理失败

java - AWS 托管现有的 Java 应用程序

mysql - 使用utf8从perl脚本访问latin1 mysql数据库

mysql - 澄清 MySQL 5.6 使用 IN PLACE alter table 添加/删除相同的索引

php - MySQL 语法根据混合变量以及从另一个表中选择记录来插入新行

sql - Oracle SQL - 如果存在,删除表并创建

mysql - 在存储过程中遍历表的所有行时出现语法错误

sql - "Mocking"使用 TST 时 SP 调用(来自其他 SP)

mysql - 如何定义每列的优先级,然后按该优先级显示结果顺序?

amazon-web-services - 在 AWS Cognito 和 Lambda 中获取 Facebook 访问 token