MySQL 재귀 업데이트
-
07-07-2019 - |
문제
자동차에 대한 세부 사항이 포함 된 하나는 MySQL 테이블과 다음과 같이 가능한 모든 자동차 모델이 포함되어 있습니다.
cars: car_id model [more details] models: model_id model_name
이제 내 문제는 'Cars'테이블에 저장된 모델 세부 사항이 내가 원하는 Model_id가 아닌 Model_name이라는 것입니다.
자동차를 업데이트 할 수있는 일종의 재귀 업데이트 테이블이 필요하다고 생각하지만, 모드 모델이지만 내 뇌가 작동을 멈추고 어떻게 해야하는지 알 수 없습니다. 누구 든지이 작업이 어떻게 될지에 대한 힌트가 있습니까?
도울 수있는 사람에게 감사합니다!
해결책
mysql> create table cars(car_id int auto_increment primary key, model varchar(50), model_id int); Query OK, 0 rows affected (0.01 sec) mysql> create table models(model_id int auto_increment primary key, name varchar(50)); Query OK, 0 rows affected (0.01 sec) mysql> insert into models(name) VALUES ('Taurus'), ('Ka'), ('Mustang'); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> insert into cars(model) VALUES ('Ka'), ('Mustang'), ('Taurus'), ('F150'); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> select * from cars; +--------+---------+----------+ | car_id | model | model_id | +--------+---------+----------+ | 1 | Ka | NULL | | 2 | Mustang | NULL | | 3 | Taurus | NULL | | 4 | F150 | NULL | +--------+---------+----------+ 4 rows in set (0.00 sec) mysql> select * from models; +----------+---------+ | model_id | name | +----------+---------+ | 1 | Taurus | | 2 | Ka | | 3 | Mustang | +----------+---------+ 3 rows in set (0.00 sec) mysql> update cars,models set cars.model_id = models.model_id where models.name = cars.model; Query OK, 3 rows affected (0.06 sec) Rows matched: 3 Changed: 3 Warnings: 0 mysql> select * from cars; +--------+---------+----------+ | car_id | model | model_id | +--------+---------+----------+ | 1 | Ka | 2 | | 2 | Mustang | 3 | | 3 | Taurus | 1 | | 4 | F150 | NULL | +--------+---------+----------+ 4 rows in set (0.03 sec)
제휴하지 않습니다 StackOverflow