获取连接的第一行

时间:2009-12-04 17:55:33

标签: oracle join

我有这样的查询:

select t1.id, t1.sample, t2.id from table t1 join table t2  
on t1.sample = t2.sample and t2.id > t1.id

我需要获得满足第二个条件的第一行。

有什么想法吗?

5 个答案:

答案 0 :(得分:3)

SELECT t1.id, t1.sample, t2.id FROM table t1 JOIN TABLE t2
ON t1.sample = t2.sample AND t2.id > t1.id WHERE ROWNUM = 1

答案 1 :(得分:1)

好。

你可以试试这个: 如果您正在使用SQL Server, 添加前1名

如果您正在使用MySQL,请添加限制1

它只会返回第一行。

为确保您也可以添加订单子句。

答案 2 :(得分:1)

返回的所有行都将满足这两个条件,因此您不必执行任何特殊操作以确保满足第二个条件。

如果要将返回的结果大小限制为1,请将WHERE ROWNUM = 1附加到查询中,如果它将在Oracle上运行。

答案 3 :(得分:0)

Oracle使用名为“ROWNUM”的东西。限制结果数量在DBMS之间令人烦恼地不一致。

SELECT t1.id, t1.sample, t2.id
FROM table t1 join table t2  
ON t1.sample = t2.sample and t2.id > t1.id
WHERE ROWNUM <= 1

答案 4 :(得分:0)

如果你想要满足第二个条件的最小t2.id那么

select * from (select t1.id, t1.sample, t2.id from table t1 join table t2
on t1.sample = t2.sample and t2.id > t1.id order by t2.id ) where rownum =1

如果你想要满足第二个条件的最大t2.id那么

select * from (select t1.id, t1.sample, t2.id from table t1 join table t2
on t1.sample = t2.sample and t2.id > t1.id order by t2.id desc) where rownum =1