gpt4 book ai didi

sql - 从子行中的父行获取数据

转载 作者:行者123 更新时间:2023-11-29 12:11:01 26 4
gpt4 key购买 nike

我有一个表 (PostgreSQL),它看起来像:

id  parentid  name   gradeA gradeB
1 I-1 5 20
2 I-2 5 30
3 1 I-3 17 50
4 1 I-4 5 12

我想获取所有包含 gradeA=5 的行,但是,如果某行包含 parentid,我希望在 under grade 中看到父级的成绩。

意思是我想得到:

id  parentid  name   gradeA gradeB
1 I-1 5 20
2 I-2 5 30
4 1 I-4 5 20 /gradeA and gradeB are if id=1 not id=4

最佳答案

一个选项是在一个表的 parentid 字段和另一个表的 id 上自行连接您的表。我使用 COALESCE() 从父表中选择 gradeAgradeB(如果它们存在),如果它们存在则默认为子值不存在。

SELECT g1.id, g1.parentid, g1.name
COALESCE(g2.gradeA, g1.gradeA) AS gradeA, COALESCE(g2.gradeB, g1.gradeB) AS gradeB
FROM grades g1 LEFT JOIN grades g2
ON g1.parentid = g2.id
WHERE g1.gradeA = 5

关于sql - 从子行中的父行获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com