#mysql #sql
#mysql #sql
Вопрос:
Я пытался исправить это в течение 2 часов и не могу найти решение
Table product
---------------- ----------------- ------ ----- --------- ----------------
| Field | Type | Null | Key | Default | Extra |
---------------- ------------------------ ----- --------- ----------------
| id | int(10) unsigned| NO | PRI | NULL | auto_increment |
| product_name | varchar(255) | NO | | NULL | |
| product_cat_id | int | NO | FK | NULL | |
---------------- ----------------- ------ ----- --------- ----------------
table Product Category
---------------- ----------------- ------ ----- --------- ----------------
| Field | Type | Null | Key | Default | Extra |
---------------- ----------------- ------ ----- --------- ----------------
| id | int(10) | NO | PRI | NULL | auto_increment |
| category_name | varchar(255) | NO | FK | NULL | |
---------------- ----------------- ------ ----- --------- ----------------
У меня есть 500 продуктов, и я должен установить product_cat_id для всех строк на основе названия категории продукта (клавиатура)
Как я могу добиться этого в MySQL?
это работает, как и ожидалось, однако ‘set.a.profile_category_id = 10’ не может быть жестко запрограммировано. Он должен быть УСТАНОВЛЕН.product_category_id = b.id где b.name = ‘Клавиатура’, но она работает не так, как ожидалось
UPDATE product a
LEFT OUTER JOIN product_categories b
ON a.product_category_id = b.id
SET a.product_category_id = 10
```
Комментарии:
1. обновите свой вопрос, добавьте также надлежащую выборку данных и ожидаемый результат
Ответ №1:
Если столбцы name из product и productcategory представляют одну и ту же информацию, вы можете использовать
UPDATE product
INNER JOIN productcategory ON productcategory.name = product.name
SET product.product _cat_id= productcategory.id;