Создать таблицу со столбцом 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, и вам нужно убедиться, что значение вводится для каждого нового виджета.
<ч />
РЕДАКТИРОВАТЬ: О, также, чтобы получить точную таблицу, которую вы перечислили второй, вы бы оставили присоединить таблицу виджетов к таблице widget_ids:
SELECT
w.widget,
wi.widget_id
FROM
widgets w
LEFT JOIN
widget_ids wi
ON
w.widget = wi.widget
И здесь, конечно, индексирование - ваш друг.