![](/img/trans.png)
[英]How to select the row with highest value from the result of an existing query?
[英]In a select sub query, how to select a value from one row, then select a value from the next row, and so forth?
与我的示例相关,我试图在 TABLE1 中添加多行的 RANGE 列值,其中每一行的 SOURCE 列值等于 TABLE1 中不同行的 ID 列值,其中这些不同行的 PARENT 列值等于 TABLE2 中的 ID 列值。 我也画了一个图表来直观地显示这一点。
我在一次只选择一行 TABLE2.ID 值以插入 Select 子查询时遇到问题,然后,主选择需要使用下一行的 TABLE2.ID 值一次又一次地运行。 每个表中有数千行。 我玩过获取和滞后,但我真的没有足够的知识来弄清楚目前。 我仍在研究如何....如下所示,我相信它想要添加所有 TABLE1 行的所有 RANGE 值,因为子查询的选择 ID 正在读取 TABLE2 中的所有行(其中 TABLE1.SOURCE =TABLE2.ID)?
Select
ID,
(Select SUM(RANGE)
from TABLE1
where SOURCE in
(Select A.ID
from TABLE1 A, TABLE2 B
where A.PARENT = B.ID
)
) as "SUM(RANGE)"
from TABLE2
______________
Result:
______________
ID SUM(RANGE)
A10 18
A11 18
预期结果:
ID SUM(RANGE)
A10 13
A11 5
示例表数据:
TABLE1
ID RANGE SOURCE PARENT
A1 A10
A2 A10
A3 A10
A4 A11
A5 A11
2 A1
5 A2
6 A3
1 A4
4 A5
---------------------------------
TABLE2
ID
A10
A11
我想你的意思是这样的声明:
Select a1.parent as ID, sum(a2.range) as "SUM(RANGE)"
From table1 a1
Left Join table1 a2 on ( a2.source = a1.id )
Inner Join table2 b on ( a1.parent = b.id )
Group By a1.parent
Order By a1.parent;
其中包含self-join
。
您可以尝试通过ID
和SOURCE
在TABLE1
self-join
,并执行SUM
和GROUP BY
SELECT t1.parent,SUM(ts.range) as "SUM(RANGE)"
FROM TABLE1 t1
JOIN TABLE1 ts on t1.ID = ts.SOURCE and t1.SOURCE IS NULL
WHERE t1.parent in (SELECT ID FROM TABLE2)
GROUP BY t1.parent
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.