sql - Oracle sql Inner join右表第一条记录

标签 sql oracle join inner-join

我的问题是:

我有两个这样的表:

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

所以只匹配了右表中的一条记录。我已经尝试了很多东西,但没有得到任何与 group by 或 distinct 一起工作的东西。

谢谢!

最佳答案

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

关于sql - Oracle sql Inner join右表第一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20085934/

相关文章:

sql - 将 TIME 插入 Oracle SQL、DATE 字段

Oracle:使用全扫描而不是复合索引

r - 如何在 R 中进行复杂的连接?

php - MySQL连接2个表但重命名列,因为它们具有相同的名称

SQL Server CDC 无效的列名 __$command_id

mysql - sql: LIKE %...% 和 LIKE 有什么区别?

MYSQL - 从两个表的 INNER JOIN 获取数据

.net - Oracle ODP.NET 版本不可知的替代方案

php - 设置一个支持 PHP 和 SQL 的私有(private)本地服务器

sql - Oracle/SQL - 查找记录(如果不存在类似记录)并加入第二个表