繁体   English   中英

如何从mysql数据库中完美选择排序

[英]How to sort perfectly a select from a mysql database

我的问题是关于从Mysql DB中提取。

在我的数据库中,我有来自计算机的清单处理。 这是我的数据库中的一行示例。

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。 在示例中,PPID为50的行是好行,而其父进程不在此处。

我真的不知道我能做什么,但这就是我的榜样。

SELECT ID, CMD
WHERE cmd LIKE %httpd% AND IF ppid IS NOT EQUAL TO OTHER ppid WHICH HAVE THE SAME cmd;

我希望你能帮助我。 抱歉,我的问题很复杂,我无法解释。

您必须在库存中找到没有父母的物品。 为此,您必须对具有父项的项目执行子查询。 这应该可以解决问题。 这也说明了独生子女的可能性。

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

参见http://sqlfiddle.com/#!2/d12c1/15

像这样吗?

SELECT ID, CMD
WHERE cmd LIKE %httpd%
GROUP BY ppid
HAVING COUNT(ppid) = 1

对表进行自我连接,如下所示:

SELECT i.ID, i.CMD,iPID,i.PPID from inventory i,inventory j WHERE i.PID <> j.PPID

在上面的示例中, inventory是表名(假设)。

尝试这样:

SELECT ID, CMD WHERE cmd LIKE '%httpd%' GROUP BY cmd;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM