簡體   English   中英

如何獲得 MySQL JOIN 的結果,其中記錄滿足連接表中的值標准?

[英]How do I get results of a MySQL JOIN where records meet a value criteria in joined table?

這可能很簡單,但我無法弄清楚......

我有兩個表:

tbl_results:

runID | balance |
1     | 3432
2     | 5348
3     | 384 

tbl_phases:

runID_fk | pc |
1        | 34 
1        | 2
1        | 18
2        | 15
2        | 18
2        | 20
3        | -20
3        | 10
3        | 60

我想獲得一個記錄集: runID、balance、min(pc)、max(pc) ,其中每個 runID 的pc>10 和 pc<50作為一個組,不包括任何關聯的 pc 值超出值范圍的 runID。

我希望從上面描述的結果中得到以下結果:

runID | balance | min_pc | max_pc
2     | 5348    | 15     | 20

...因為 runID=1&3 的 pc 值超出了上述 pc 的數字范圍。

提前致謝!

您可以根據您在您的擁有條款中的要求應用過濾器。 您可以嘗試以下方法。

查詢#1

SELECT
    r.runID,
    MAX(r.balance) as balance,
    MIN(p.pc) as min_pc,
    MAX(p.pc) as max_pc
FROM
    tbl_results r
INNER JOIN 
    tbl_phases p ON p.runID_fk = r.runID
GROUP BY 
    r.runID
HAVING
    MIN(p.pc)>10 AND MAX(p.pc) < 50;
運行ID 平衡 min_pc 最大PC
2 5348 15 20

查詢#2

SELECT
    r.runID,
    MAX(r.balance) as balance,
    MIN(p.pc) as min_pc,
    MAX(p.pc) as max_pc
FROM
    tbl_results r
INNER JOIN 
    tbl_phases p ON p.runID_fk = r.runID
GROUP BY 
    r.runID
HAVING
    COUNT(CASE WHEN p.pc <= 10 or p.pc >= 50 THEN 1  END) =0;
運行ID 平衡 min_pc 最大PC
2 5348 15 20

查看 DB Fiddle 上的工作演示

更新了 Rahul Biswas 的評論

暫無
暫無

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

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