簡體   English   中英

如何使用mysql和php從子表中獲取數據的最大值和最小值?

[英]How to get the max and min of a data from child table with mysql and php?

讓我們舉個例子:

我有2張桌子如下

數據庫中的主表

子表使用P_Id與父表相關。

父表每個案例包含一行。 子表存儲每種情況下的操作,並通過P_id進行關聯,datetime列記錄操作時間。

現在,我想查詢每種情況的最大值 ,如下所示

max表的結果

我想得到的第二件事是在同一個表中每種情況的最大值和最小值可以通過mysql來完成,或者我也必須使用php來完成。

我期望的結果如下:

每種情況的最大和最小結果

像這樣,表中有1000行。 我需要使用python或其他方法來處理此類數據嗎?

使用max()和min()聚合函數,對於max檢查是否與min相同,如果相同,則返回null:

select data, min(sub_data), if(min(sub_data)=max(sub_data), null, max(sub_data)
from parent p
inner join child c on p.id=c.p_id

對於您的第一件事:

SELECT
    p.data, c.sub_data, c.`datetime`
FROM parent p
JOIN child c
ON p.id = c.pid
JOIN (
    SELECT max(`datetime`) as `datetime`, pid
    FROM child
    GROUP BY pid
) c1
on p.id = c1.pid AND c.`datetime` = c1.`datetime`;

第二件事是:

SELECT
    p.data,
    cmin.sub_data as Min(sub_data),
    case when cmin.sub_data = cmax.sub_data then null else cmax.sub_data end as Min(sub_data)
FROM parent p
JOIN (
    SELECT max(`datetime`) as `maxdatetime`, min(`datetime`) as `mindatetime`, pid
    FROM child
    GROUP BY pid
) c
on p.id = c1.pid
JOIN child cmax
ON p.id = cmax.pid AND c.`maxdatetime` = cmax.`datetime`
JOIN child cmin
ON p.id = cmin.pid AND c.`mindatetime` = cmin.`datetime`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM