我有三个表,如下所示:

我想获得如下输出:

这是我到现在为止所尝试的
SELECT table1.tb1_a,
CASE WHEN table3.tb3_a IS NOT NULL THEN
tb3_b
ELSE 'No city for him yet'
END AS 'City'
FROM table1
LEFT OUTER JOIN table2 ON
table1.tb1_a = table2.tb2_a
LEFT OUTER JOIN table3 ON
table2.tb2_a = table3.tb3_a
WHERE table3.tb3_a IN
(
)
Run Code Online (Sandbox Code Playgroud)
现在我正在努力研究如何选择tb3_a列的最大值
这应该可以满足您的需要:
SELECT t1.tb1_a, COALESCE(t3.tb3_a, 'No city for him yet') AS City
FROM table1 t1
LEFT JOIN (
SELECT MAX(tb2_b) AS tb2_b, tb2_a
FROM table2
GROUP BY tb2_a
) t2 ON (t2.tb2_a = t1.tb1_a)
LEFT JOIN table3 t3 ON (t3.tb3_a = t3.tb2_b);
Run Code Online (Sandbox Code Playgroud)
关键点是中间的内联视图,我们在其中创建一种虚拟表,其中包含tb2_b每个 的最大值tb2_a。然后我们可以加入其中以达到预期的结果。