PostgreSQL自关联外键表如何查询玩家及对应追捕目标信息
解法
你需要用自连接实现这个需求,把player表分别取两个别名,一个代表玩家自身,另一个代表被追捕的目标,通过id_hunt和id的关联关系匹配即可。
可直接运行的查询语句:
SELECT p.id AS 玩家id, p.name AS 玩家姓名, h.id AS 追捕目标id, h.name AS 追捕目标姓名 FROM player p INNER JOIN player h ON p.id_hunt = h.id;
说明:
- 这里给
player表取了两个别名:p代表发起追捕的玩家本身,h代表被追捕的目标玩家 - 用
INNER JOIN关联的条件是玩家的id_hunt等于目标玩家的id,刚好匹配你表中设置的外键关联规则 - 字段别名可以根据你自己的需求调整,如果需要返回邮箱等其他字段也可以自行加在SELECT列表里
- 你表中设置了
id_hunt非空且有外键约束,INNER JOIN就可以覆盖所有正常数据,如果需要兼容极端的关联失效场景,可以把INNER JOIN换成LEFT JOIN。
内容的提问来源于stack exchange,提问作者pedroale 99
相关产品推荐
相关产品推荐

