先决条件
我有两张桌子.一个表中的人员列表,以及他们如何在外键查找表中彼此偏好.第一个表只是人员列表.另一个是他们都列出了一些他们宁愿作为室友的人.
表人:
表选择:
题
如何列出与SQL(或PHP)匹配?也就是说,如果一个人也在他想要作为室友的人名单上?基本上你有一个选择列表的选择器.你如何检查选择器是否也在他或她选择的一个列表中?
基本上我想要一个包含每个稳定匹配的报告,也就是选择器也在他或她所选择的至少一个列表中.
我猜一个for循环会做的伎俩,但你怎么会把第一次迭代放在一起?其余的循环少得多?
加入解决方案:
SELECT
r1.name as name1,
r2.name as name2
FROM
roommate r1
JOIN
roommate_pair rp1 ON r1.id = rp1.chooser_id
JOIN
roommate r2 ON r2.id = rp1.choosen_id
JOIN
roommate_pair rp2 ON r2.id = rp2.chooser_id
WHERE
rp2.choosen_id = r1.id
GROUP BY
CONCAT(GREATEST(r1.id,r2.id),'-',LEAST(r1.id,r2.id))
Run Code Online (Sandbox Code Playgroud)
最后一个GROUP BY是删除交换列中的重复匹配.工作SQL小提琴
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |