我想在两个表之间进行选择操作,其中表 1(l_id) 中的单个列数据分布到表 2(g_id, p_id) 中的多个列中,如何编写查询
表 1
e_id, name, l_id
123 dog 789
123 cat 543
123 owl 602
表 2
f_id, e_id, g_id, p_id
098 123 789 543
099 123 602 602
100 123 543 543
101 123 543 789
102 123 789 789
我想从 table1 中获取名称字段作为主要输出,这样 g_id 对应名称和 p_id 对应名称进入单独的列,如下所示。
输出:
e_id, g_name, g_id, p_name, p_id
123 dog 789 cat 543
123 owl 602 owl 602
123 cat 543 cat 543
123 cat 543 dog 789
123 dog 789 dog 789
我尝试了 Union ALL, OR 运算符,但这只是一个子查询,J 有另一个表来进行连接操作以获得完全不同的数据。请帮助了解如何在此场景中执行 JOIN。寻找更多的 JOIN 操作。
你只是在一个普通的join之后——只需要join同一个表两次;一次为
p_id
一次为g_id
:
select t2.e_id, tg.name g_name, t2.g_id, tp.name p_name, t2.p_id
from table2 t2
inner join table1 tg on tg.l_id = t2.g_id
inner join table1 tp on tp.l_id = t2.p_id
如果我理解正确你的问题,你只需要加入。
select t2.e_id,
t1g.name g_name,
t2.g_id,
t1p.name p_name,
t2.p_id
from table2 t2
join table1 t1g on (t1g.l_id = t2.g_id and t1g.e_id=t2.e_id)
join table1 t1p on (t1p.l_id = t2.p_id and t1p.e_id=t2.e_id)
不清楚
e_id
是否可以不同,所以我通过它加入on子句以防万一。
• 如何获取存在于一个数据框中但不存在于 Pandas 的第二个数据框中的行列表
• Polars:在列表元素上运行 polars 表达式以进行行级操作——如何应用 when then otherwise on arr.eval
• 基于参考数据帧,有条件地从另一个数据帧列表中替换数据帧列表中的值
• EXCEL 365 - 无法获得 4 级下拉菜单以根据其他条件显示数据
• 如何根据用户数据使用 Laravel Eloquent orderBy 数据
• 是否有一个 bigquery SQL 脚本来返回基于有序列表的数据?
• 按两列提取匹配
• 索引所有中间列表的列表位置,即使列表为空(包{rrapply})