2015-08-18 5 views
0

Я работаю на столе в базе данных MySQL, которая имеет следующие столбцы:Добавление/Редактирование MYSQL ключей

- ItemID (auto incremented key) 
- Item 
- CategoryID (empty column) 
- Category 
- SubcategoryID (empty column) 
- Subcategory 

В других таблиц в той же базе данных у меня есть список категорий и подкатегорий с их уникальными идентификаторами , и я хотел бы взять эти идентификаторы из существующих таблиц и перенести их в таблицу элементов, описанную выше. После переноса идентификаторов я намерен удалить записи категории и подкатегории, так как идентификатор будет служить достаточной ссылкой для моих целей.

Я мог бы сделать это вручную, и я сделаю это вручную, если необходимо, но прохождение нескольких тысяч записей в MySQL не похоже на мой идеальный день.

Мой вопрос просто, есть ли способ использовать мои существующие таблицы, чтобы изменить таблицу элементов (выше) так, как я описал?

Спасибо!

+0

MySQL поддерживает присоединяется обновления: https://dev.mysql.com/doc/refman/5.0/en/update .html –

+0

Я предполагаю, что это * столбцы *, а не * категории *? – Strawberry

+0

Правильно, я небрежно относился к своей формулировке. – ajsmart

ответ

1

Так у вас есть category стола с id и category полем и category поля соответствует items.category таблице.

Чтобы обновить items.category_id, ПРИСОЕДИНЯЙСЯ к category таблице на items.category <=> category.category и UPDATE items.category_id со значением в category.id

UPDATE items 
    JOIN category ON items.category <=> category.category 
SET items.category_id = category.id; 

Вы, возможно, придется изменить некоторые имена столбцов, но, надеюсь, они очевидны.

Повторите это для подкатегории и любых других полей.

Примечание: <=> является NULL-безопасной равны, поэтому строки со значениями NULL будут обновлены правильно

Смежные вопросы