我有这样的查询:
select t1.id, t1.sample, t2.id from table t1 join table t2
on t1.sample = t2.sample and t2.id > t1.id
我需要获得满足第二个条件的第一行。
有什么想法吗?
答案 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