我有一个名为“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 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 菜鸟。也许你们可以帮忙。