SQL JOIN后如何仅添加子表计算的最小Start日期至主表
问题解决
你的SQL存在三个问题导致无法正确返回结果:
- 子查询里的
min(Start)没有定义列别名,外层查询没法用t2.Start引用这个计算结果 - 关联条件里写错了表别名:外层表是
table1,你却写了t1.ID,应该是table1.ID - 如果要获取table1的全部数据,应该用
LEFT JOIN而非INNER JOIN,否则table1中没有对应table2记录的行会被过滤掉
修正后的SQL如下:
SELECT table1.*, t2.MinStart FROM table1 LEFT JOIN ( SELECT [Parent ID], MIN(Start) AS MinStart FROM table2 GROUP BY [Parent ID] ) t2 ON t2.[Parent ID] = table1.ID
如果只需要保留table1中在table2有对应Parent ID的行,可以把LEFT JOIN换回INNER JOIN。
内容的提问来源于stack exchange,提问作者Tim Wheeler
相关产品推荐
相关产品推荐

