我已经尝试了两个晚上来解决这个问题,但无法做到。我正在尝试使用三个表(person、person_pet、pet)更新一个值。宠物的父母应该是拥有宠物的人。我试图通过仅使用 pet.id 和 person_pet.pet_id 来进行一对一的匹配。person_pet 是一个关系表,说明哪个宠物属于哪个人。我能找到的最接近的答案在这里(通过加入 3 个表来更新 SQL)。
这是我最好的镜头:
UPDATE pet
SET parent =
(SELECT person.id
FROM person, person_pet, pet
WHERE
person_pet.pet_id = pet.id);
请帮我指出正确的方向,谢谢!
以下是我一直在使用的确切表格:
人
+----+------------+-----------+------+------+--------------+--------+------+
| id | first_name | last_name | age | dead | phone_number | salary | dob |
+----+------------+-----------+------+------+--------------+--------+------+
| 0 | Zed | Shaw | 37 | NULL | NULL | NULL | NULL |
| 1 | Terry | Berry | 42 | NULL | NULL | NULL | NULL |
| 2 | Tyler | Brown | 25 | NULL | NULL | NULL | NULL |
| 3 | Frank | Smith | 100 | NULL | NULL | NULL | NULL |
宠物
+----+----------+------------+------+------+------+--------+
| id | name | breed | age | dead | dob | parent |
+----+----------+------------+------+------+------+--------+
| 0 | Zeds Pet | Unicorn | 1000 | 0 | NULL | NULL |
| 1 | Zeds Pet | Robot | 1 | 0 | NULL | NULL |
| 2 | Murphy | Yellow lab | 6 | 0 | NULL | NULL |
+----+----------+------------+------+------+------+--------+
人宠物
+-----------+--------+--------------+
| person_id | pet_id | purchased_on |
+-----------+--------+--------------+
| 0 | 0 | 0000-00-00 |
| 0 | 1 | 0000-00-00 |
| 2 | 2 | 0000-00-00 |
| 4 | 3 | 0000-00-00 |
| 5 | 4 | 0000-00-00 |
| 6 | 5 | 0000-00-00 |
| 7 | 6 | 0000-00-00 |
| 5 | 7 | 0000-00-00 |
+-----------+--------+--------------+