我的问题是:
我有两个表,例如:
username | portname | symbol | shares
---------+----------+--------+-------
phil | test | APL | 214
---------+----------+--------+--------
它有更多的记录,但这仅仅是一个例子。然后我有另一个这样的表,每个符号有多个记录
symbol | high | low | timestamp
-------+------+-----+-----------
APL | 200 | 20 | *timestamp object
APL | 400 | 34 | *timestamp object
我希望在我加入两个表的地方返回一个表,但只有第二个表中的第一行被连接,所以会返回这样的内容:
symbol | high | low | timestamp
-------+------+-----+----------
APL | 400 | 34 | *timestamp object
因此只有右表中的一条记录匹配。我已经尝试了很多东西,但是没有任何东西可以与团队合作或者不同。
谢谢!
答案 0 :(得分:9)
SELECT t1.symbol, t3.high, t3.low, t3.timestamp
FROM Table1 t1
JOIN (
SELECT inn.*
FROM (SELECT t2.*, (ROW_NUMBER() OVER(PARTITION BY symbol ORDER BY timestamp DESC)) As Rank
FROM Table2 t2) inn
WHERE inn.Rank=1
) t3
ON t1.symbol = t3.symbol;
请参阅SQL Fiddle