【发布时间】:2016-03-15 16:57:06
【问题描述】:
想象以下两个表,分别命名为“Users”和“Orders”:
ID NAME
1 Foo
2 Bar
3 Qux
ID USER ITEM SPEC TIMESTAMP
1 1 12 4 20150204102314
2 1 13 6 20151102160455
3 3 25 9 20160204213702
我想得到的输出是:
USER ITEM SPEC TIMESTAMP
1 12 4 20150204102314
2 NULL NULL NULL
3 25 9 20160204213702
换句话说:在用户和订单之间进行 LEFT OUTER JOIN,如果您没有找到该用户的任何订单,则返回 null,但如果您确实找到了一些,则只返回第一个(基于最早的时间戳)。
如果我只使用 LEFT OUTER JOIN,它将为用户 1 返回两行,我不希望这样。我想将 LEFT OUTER JOIN 嵌套在另一个选择中,该选择将 GROUP BY 其他字段并获取 MIN(TIMESTAMP) 但这也不起作用,因为我需要在我的 group by 中有“SPEC”,并且因为这两个订单有不同的 SPEC,它们仍然会出现。
感谢任何关于如何达到预期结果的想法。
【问题讨论】:
标签: sql sql-server left-join outer-join