我有一个名为“tc_person”的人表和名为“tc_marriage”的婚姻表。我想从我的人员表格中选择几列,并选择一列代表合作伙伴的ID。使用具有取决于主要查询的多个结果的子查询
婚姻表包括两个人的pid_1和pid_2 - 但重要的是,只有一对夫妇入境,而夫妇ID的顺序可能会有所不同。这里的表:
tc_person:
| id | name | lastname |
--------------------------------------
| 4 | peter | smith |
| 5 | sarah | smith |
tc_marriage:
| id | pid_1 | pid_2 |
--------------------------------------
| 0 | 5 | 4 |
| 1 | 7 | 9 |
看来,我的子查询的原始SELECT语句之前解释为一个整体。现在我收到错误,我的子查询返回多行。
SELECT p.id, p.name, p.lastname,
(SELECT m.pid_1 FROM tc_marriage m WHERE m.pid_2 = p.id UNION
SELECT m.pid_2 FROM tc_marriage m WHERE m.pid_1 = p.id) as partner_id
FROM tc_person p WHERE p.lastname LIKE 'smith';
我找下面的输出:
| id | name | lastname | partner_id |
-----------------------------------------------------
| 4 | peter | smith | 5 |
| 5 | sarah | smith | 4 |
这甚至可能只有一个单一的查询?你现在可以告诉我,我是SQL noob。也许你们可以帮忙。