我在mysql中得到了以下表格
id|top_id|amount
1 NULL 2
2 NULL 8
3 NULL 4
4 3 7
5 2 8
6 2 4
7 5 5
8 7 1
9 6 6
10 8 6对于前3个i,我需要将其后继者的所有数量相加,才能得到以下结果:
id | amount
1 8
2 32
3 11我猜应该有连接,但不幸的是,我不能得到工作的mysql请求。有人能帮帮我吗?
更新:在php中,我有以下查询:
$tops = $mysqli->query('SELECT * FROM table WHERE top_id IS NULL')这显然只返回3个top ids和它们的普通数值(分别为2、8和4)。我需要得到12,28和11,而不是2,8和4,这就是问题所在(
发布于 2016-08-19 01:00:07
这是最原始的解决方案。毫无疑问,很快就会有人为更具伸缩性的解决方案提供一些提示(可能是使用PHP)……
SELECT a.id
, COALESCE(a.amount,0)
+ COALESCE(b.amount,0)
+ COALESCE(c.amount,0)
+ COALESCE(d.amount,0)
+ COALESCE(e.amount,0)
+ COALESCE(f.amount,0) total
FROM my_table a
LEFT
JOIN my_table b
ON b.top_id = a.id
LEFT
JOIN my_table c
ON c.top_id = b.id
LEFT
JOIN my_table d
ON d.top_id = c.id
LEFT
JOIN my_table e
ON e.top_id = d.id
LEFT
JOIN my_table f
ON f.top_id = e.id
WHERE a.top_id IS NULL;https://stackoverflow.com/questions/39023468
复制相似问题