我想根据最大值连接两个表。
max(lg) 是正确的,但“事件”列无法正确加载。
下面是我的示例表和所需的输出...
我正在使用...
SELECT a.id
, a.name
, b_lg
, b_event
FROM TABLE_A a
LEFT
JOIN
( SELECT MAX(lg) as b_lg
, event as b_event
, enrolid as b_enrolid
FROM TABLE_B
GROUP
BY lg) b
ON a.id = b_enrolid
GROUP BY a.id
####### 表A ########
id | name |
1 | John |
2 | Mike |
3 | Dave |
4 | Sarah |
################表B##############
id | enrolid | lg | event |
1 | 1 | 10 | A |
2 | 2 | 20 | B |
3 | 1 | 30 | C |
4 | 2 | 60 | D |
5 | 2 | 50 | E |
6 | 3 | 60 | F |
7 | 1 | 70 | G |
8 | 3 | 20 | H |
###### 期望输出 #####
id | name | lg | event |
1 | John | 70 | G |
2 | Mike | 60 | D |
3 | Dave | 60 | F |
4 | Sara | NULL | NULL |
最佳答案
此查询将为您提供您想要的结果。它计算出每个 enrolid
的 lg
的 MAX
值,然后使用这些值来 LEFT JOIN
到 >Table_A
获取名称
,Table_B
获取事件
:
SELECT A.id, A.name, B.lg, B.event
FROM Table_A A
LEFT JOIN (SELECT enrolid, MAX(lg) AS max_lg
FROM Table_B
GROUP BY enrolid) M ON M.enrolid = A.id
LEFT JOIN Table_B B ON B.enrolid = M.enrolid AND B.lg = M.max_lg
ORDER BY A.id
输出:
id name lg event
1 John 70 G
2 Mike 60 D
3 Dave 60 F
4 Sarah null null
关于MySQL MAX 在连接查询中的应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58586760/