Php 如何对mysql数据库中的select进行完美排序
我的问题是从Mysql数据库中提取数据 在我的数据库中,我有来自计算机的库存过程。 下面是我的数据库中的一个行示例Php 如何对mysql数据库中的select进行完美排序,php,mysql,sql,fork,pid,Php,Mysql,Sql,Fork,Pid,我的问题是从Mysql数据库中提取数据 在我的数据库中,我有来自计算机的库存过程。 下面是我的数据库中的一个行示例 ID CMD PID PPID 1000 /usr/sbin/httpd 9260 12600 1001 /usr/sbin/httpd 9261 12600 1002 /usr/sbin/httpd 9262 12600 1003 /usr/sbin/httpd 92
ID CMD PID PPID
1000 /usr/sbin/httpd 9260 12600
1001 /usr/sbin/httpd 9261 12600
1002 /usr/sbin/httpd 9262 12600
1003 /usr/sbin/httpd 9263 12600
1004 /usr/sbin/httpd 12600 50
好的,我只想选择行:
1004 /usr/sbin/httpd 12600 50
实际上,我的PHP代码选择了5行
但是现在我想在它们之间放置一个php代码来选择CMD,它不是由父进程创建的。
在这个例子中,PPID50行是好的,她的父进程不在这里
我真的不知道我能做什么,但这就是我的例子
SELECT ID, CMD
WHERE cmd LIKE %httpd% AND IF ppid IS NOT EQUAL TO OTHER ppid WHICH HAVE THE SAME cmd;
我希望你能帮助我。
很抱歉,我的问题很复杂,我不擅长解释。尝试如下:
SELECT ID, CMD WHERE cmd LIKE '%httpd%' GROUP BY cmd;
SELECT i.ID, i.CMD,iPID,i.PPID from inventory i,inventory j WHERE i.PID <> j.PPID
试着这样做:
SELECT ID, CMD WHERE cmd LIKE '%httpd%' GROUP BY cmd;
SELECT i.ID, i.CMD,iPID,i.PPID from inventory i,inventory j WHERE i.PID <> j.PPID
像这样的
SELECT ID, CMD
WHERE cmd LIKE %httpd%
GROUP BY ppid
HAVING COUNT(ppid) = 1
像这样的
SELECT ID, CMD
WHERE cmd LIKE %httpd%
GROUP BY ppid
HAVING COUNT(ppid) = 1
像这样对表进行自联接:
SELECT ID, CMD WHERE cmd LIKE '%httpd%' GROUP BY cmd;
SELECT i.ID, i.CMD,iPID,i.PPID from inventory i,inventory j WHERE i.PID <> j.PPID
从清单i、清单j中选择i.ID、i.CMD、iPID、i.PPID,其中i.PID j.PPID
在上面的示例中,
inventory
是表名(假设)。对表进行如下自联接:
SELECT ID, CMD WHERE cmd LIKE '%httpd%' GROUP BY cmd;
SELECT i.ID, i.CMD,iPID,i.PPID from inventory i,inventory j WHERE i.PID <> j.PPID
从清单i、清单j中选择i.ID、i.CMD、iPID、i.PPID,其中i.PID j.PPID
在上面的示例中,
inventory
是表名(假设)。您必须找到库存中没有父项的项目。要执行此操作,必须对具有父项的项执行子查询。这应该能奏效。这也解释了独生子女的可能性
SELECT i.*
FROM Inventory i
LEFT JOIN
(-- with parents in Inventory
SELECT k.PID
FROM Inventory j
JOIN Inventory k ON k.PPID = j.PID) l ON l.PID = i.PID
WHERE l.PID IS NULL
请参见您必须在库存中找到没有父项的项目。要执行此操作,必须对具有父项的项执行子查询。这应该能奏效。这也解释了独生子女的可能性
SELECT i.*
FROM Inventory i
LEFT JOIN
(-- with parents in Inventory
SELECT k.PID
FROM Inventory j
JOIN Inventory k ON k.PPID = j.PID) l ON l.PID = i.PID
WHERE l.PID IS NULL
请看请解释更多…50不是家长流程吗?@Anubhav抱歉,我真的不擅长解释这一点,因为这对我来说太复杂了:s@tofuhim是的,50是httpd的父进程,在某些情况下,父进程(PPID)是1,因为它是INIT,而在另一些时候,我们得到了inception。。。fork还需要考虑您有一个子实例的可能性,例如,(1005,'/usr/sbin/httpd',50,77);请解释更多…50不是家长流程吗?@Anubhav抱歉,我真的不擅长解释,因为这对我来说太复杂了:s@tofuhim是的,50是httpd的父进程,在某些情况下,父进程(PPID)是1,因为它是INIT,而在另一些时候,我们得到了inception。。。fork还需要考虑您有一个子实例的可能性,例如,(1005,'/usr/sbin/httpd',50,77);如果只有一个子进程呢?谢谢,你和@Suresh Kamrushi很快就得到了一个很好的答案,你(也)能解释一下这个“ppid分组”…@Arlaud Pierre和“拥有计数(ppid)”是如何工作的吗=1不起作用。@user3114471谷歌上的第一个链接:如果只有一个子进程怎么办?谢谢,你和@Suresh Kamrushi很快就得到了一个很好的答案,你(也)能解释一下这个“按ppid分组”是如何工作的吗?@Arlaud Pierre with“HAVING COUNT”(ppid)=1它不起作用。@user3114471谷歌上的第一个链接:我不知道你怎么做这个魔法,但它起作用了。你能给我解释一下吗?我不知道你是怎么制作这个魔法的,但它起作用了。你能给我解释一下吗?我不认为这完全符合你的想法-尽管我认为它在正确的轨道上。我不认为这完全符合你的想法-尽管我认为它在正确的轨道上。