我有一个输入数据,其中包含创建id的id,pid,pname,ppid(可能认为是时间),pid(进程ID),pname(进程名称),ppd(父进程ID)。 / p>
+---+---+-----+----+
| id|pid|pname|ppid|
+---+---+-----+----+
| 1| 1| 5| -1|
| 2| 1| 7| -1|
| 3| 2| 9| 1|
| 4| 2| 11| 1|
| 5| 3| 5| 1|
| 6| 4| 7| 2|
| 7| 1| 9| 3|
+---+---+-----+----+
现在需要找到ppname(父进程名称),它是以下条件previous.pid == current.ppid
的最后一个pname(先前的pnames)
上一个示例的预期结果:
+---+---+-----+----+------+
| id|pid|pname|ppid|ppname|
+---+---+-----+----+------+
| 1| 1| 5| -1| -1|
| 2| 1| 7| -1| -1| no item found above with pid=-1
| 3| 2| 9| 1| 7| last pid = 1(ppid) above, pname=7
| 4| 2| 11| 1| 7|
| 5| 3| 5| 1| 7|
| 6| 4| 7| 2| 11| last pid = 2(ppid) above, pname=11
| 7| 1| 9| 3| 5| last pid = 3(ppid) above, pname=5
+---+---+-----+----+------+
我可以根据pid==ppid
自己加入,然后在ID之间进行区分并选择具有最小正差异的行,然后在我们没有发现任何正差异的情况下(-1情况)再次加入。
但是我认为这几乎像是交叉连接,由于我有1亿行,所以我可能负担不起。