讓我們的例子:如何使用mysql和php從子表中獲取數據的最大和最小值?
我有2個表如下
子表是使用P_ID相關父表。
父表中每個案例包含一行。 子表存儲每個案例的相關操作並通過P_id相關,日期時間列記錄操作時間。
現在, 我想查詢什麼是每一種情況下的最大值,如下
我想GET第二件事是最大和最小的同桌每種情況下的 只能通過mysql來完成,或者我也必須使用php。
結果,我想到的是如下:
像這樣有表中的行1000的。我是否需要使用python或其他東西來處理這種數據。
讓我們的例子:如何使用mysql和php從子表中獲取數據的最大和最小值?
我有2個表如下
子表是使用P_ID相關父表。
父表中每個案例包含一行。 子表存儲每個案例的相關操作並通過P_id相關,日期時間列記錄操作時間。
現在, 我想查詢什麼是每一種情況下的最大值,如下
我想GET第二件事是最大和最小的同桌每種情況下的 只能通過mysql來完成,或者我也必須使用php。
結果,我想到的是如下:
像這樣有表中的行1000的。我是否需要使用python或其他東西來處理這種數據。
使用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`
你可以在MySQL單獨做到這一點。 – Shadow