试想以下两个表,一个名为“用户”及“订单”:LEFT OUTER JOIN和只返回第一个匹配
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返回两行,我不希望这样。我想在另一个select中嵌套LEFT OUTER JOIN,GROUP BY其他字段并获取MIN(TIMESTAMP),但这不起作用,因为我需要在我的组中有“SPEC”,并且由于这两个命令有不同的SPEC,他们仍然出现。
有关如何达到预期结果的任何想法,