我有一個名爲「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。也許你們可以幫忙。