我有一個很難推理問題選擇不同的元組在MySQL
+------+------------+ | id | sibling_id | +------+------------+ | 1 | NULL | | 2 | 3 | | 3 | 2 | | 4 | 5 | | 5 | 4 | +------+------------+
如果我選擇ids
(1,2,3,5)
,我想只得到(1,2,4)
,因爲3 points to 2
和2 points to 3
,所以我只想要其中之一。
預期輸出:
+------+------------+ | id | sibling_id | +------+------------+ | 1 | NULL | | 2 | 3 | | 4 | 5 | +------+------------+
我怎麼能這樣做與MySQL(5.7)?
解決方案:
select distinct least(id, coalesce(sibling, id)) from test where id in (1,2,3,5);
謝謝大家!
不應該得到(1,2,4)? –
爲什麼'5',因爲指向'4'?你不應該收到'1,2,4'嗎? – BenM
不,因爲4不在我選擇的ID列表中(它是1,2,3,5) – Shivoham