选择最接近值小于给定值的条目
Selecting entries with nearest value less than given value
我想 select 最接近值小于给定值的条目 SQL(没有 PL/SQL!或类似的东西)。
我走到这一步:
select max(RUN_ID) from RUN_TABLE where KEY = 'TEST#33' and RUN_ID < 3
这 returns 与键匹配的最大值小于 3 的行,但我希望能够 select 所有列。
Run_ID Entity Key
1 HK TEST#11
2 AB TEST#22
2 CK TEST#33
3 TB TEST#22
3 DB TEST#33
我希望在拥有密钥 TEST#22 和最大 RUN_ID 4 到 select 行时能够:
3 TB TEST#22
而当说最大 RUN_ID 2 检索时
2 AB TEST#22
select Run_ID, Entity, Key from from RUN_TABLE a
where Run_ID = (select max(RUN_ID) from RUN_TABLE b where b.Key = a.Key and RUN_ID < 3)
and KEY = 'TEST#33'
类似于:
select t1.*
from RUN_TABLE t1
join (
select max(RUN_ID) AS MAX_RUN_ID
from RUN_TABLE
where KEY = 'TEST#33' and RUN_ID < 3
) t2 ON t1.RUN_ID = t2.MAX_RUN_ID
WHERE KEY = 'TEST#33'
按 运行 id 降序排列,仅取第一行,对于 Oracle:
select top 1 * from RUN_TABLE
where KEY = 'TEST#33' and RUN_ID < 3
order by RUN_ID desc
fetch first 1 rows
或SQL服务器(因为SQLFiddle的Oracle选项关闭):
select top 1 * from RUN_TABLE
where KEY = 'TEST#33' and RUN_ID < 3
order by RUN_ID desc
我想 select 最接近值小于给定值的条目 SQL(没有 PL/SQL!或类似的东西)。
我走到这一步:
select max(RUN_ID) from RUN_TABLE where KEY = 'TEST#33' and RUN_ID < 3
这 returns 与键匹配的最大值小于 3 的行,但我希望能够 select 所有列。
Run_ID Entity Key
1 HK TEST#11
2 AB TEST#22
2 CK TEST#33
3 TB TEST#22
3 DB TEST#33
我希望在拥有密钥 TEST#22 和最大 RUN_ID 4 到 select 行时能够:
3 TB TEST#22
而当说最大 RUN_ID 2 检索时
2 AB TEST#22
select Run_ID, Entity, Key from from RUN_TABLE a
where Run_ID = (select max(RUN_ID) from RUN_TABLE b where b.Key = a.Key and RUN_ID < 3)
and KEY = 'TEST#33'
类似于:
select t1.*
from RUN_TABLE t1
join (
select max(RUN_ID) AS MAX_RUN_ID
from RUN_TABLE
where KEY = 'TEST#33' and RUN_ID < 3
) t2 ON t1.RUN_ID = t2.MAX_RUN_ID
WHERE KEY = 'TEST#33'
按 运行 id 降序排列,仅取第一行,对于 Oracle:
select top 1 * from RUN_TABLE
where KEY = 'TEST#33' and RUN_ID < 3
order by RUN_ID desc
fetch first 1 rows
或SQL服务器(因为SQLFiddle的Oracle选项关闭):
select top 1 * from RUN_TABLE
where KEY = 'TEST#33' and RUN_ID < 3
order by RUN_ID desc