【问题标题】:How to solve MySQL subquery with joins?如何使用连接解决 MySQL 子查询?
【发布时间】:2021-03-11 20:47:37
【问题描述】:

有没有办法从给定的表中检索结果? Tbh 我不知道如何用子查询来完成这个。当前的示例充满了日期时间案例。我发现它们非常令人困惑......

表 #1

** red **
|id| green_id |
|--| ---------|
|1 | 1        |
|2 | 2        |
|3 | 3        |

表#2

**green**
|id| blue_id | enum |
|--| --------|------|
|1 | 1       |100   |
|2 | 1       |101   |
|3 | 1       |102   |
|4 | 2       |105   |

表#3

**blue**
|id| title |
|--| ------|
|1 | abc   |
|2 | def   |
|3 | ghi   |

MySQL 查询

SELECT 
    r.*,
    g.enum AS g_enum,        
    ???????? g.enum_max ????????? <--- how
    b.title AS b_title 
  FROM red AS r
  LEFT JOIN green AS g
    r.green_id = g.id
  LEFT JOIN blue AS b
    g.blue_id = b.id
  WHERE 
    r.id = 1

g.enum_max 将是:

SELECT MAX(enum) FROM green WHERE blue_id = 1

r.id=1 的结果

|id| green_id | g_enum | g_enum_max | blue_title |
|--| ---------|--------|------------|------------|
|1 | 1        | 100    | 102????    | abc        |

【问题讨论】:

  • 嗯,很容易纠正

标签: mysql subquery


【解决方案1】:

为此使用子查询

SELECT 
    r.*,
    g.enum AS g_enum,        
    (SELECT MAX(enum) FROM green WHERE blue_id = g.blue_id) g_enum_max ,

    b.title AS b_title 
  FROM red AS r
  LEFT JOIN green AS g ON
    r.green_id = g.id
  LEFT JOIN blue AS b ON
    g.blue_id = b.id
  WHERE 
    r.id = 1

【讨论】:

  • 感谢您的时间和解决方案。我完全没想到我可以在这个地方制作 subq。非常感谢!
猜你喜欢
  • 2019-12-08
  • 2015-09-26
  • 2011-11-25
  • 2016-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多