我的任务是解决一个 SQL 问题,该问题超出了我所掌握的 sql 知识范围。我有以下问题。
我有一个当前看起来像这样的表:
widgets
---------
a
a
a
b
b
c
d
d
d
我想要另一个表,每个唯一值都递增编号......像这样:
widgets | widget_id
--------- ----------
a | 1
a | 1
a | 1
b | 2
b | 2
c | 3
d | 4
d | 4
d | 4
我不确定如何使用插入语句完成此操作?
最佳答案
创建一个包含 IDENTITY 列的表:
像这样:
CREATE TABLE widget_ids (
widget_id INT AUTO_INCREMENT PRIMARY KEY,
widget varchar(5)
)
并运行这个命令:
INSERT INTO
widget_ids (widget)
SELECT DISTINCT
widget
FROM
widgets
现在,这只是一个例子。如果您想要一个长期解决方案,您可能希望在 widget_ids 表中为您的“小部件”字段编制索引,并且您希望确保为每个新小部件输入一个值。
编辑:哦,另外,要获得您列在第二位的确切表,您可以将 widgets 表左连接到 widget_ids 表:
SELECT
w.widget,
wi.widget_id
FROM
widgets w
LEFT JOIN
widget_ids wi
ON
w.widget = wi.widget
当然,索引是您的 friend 。
关于mysql - 为sql中的每个唯一值插入增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/710519/