我有一个数字表,它们是升序的,但是没有增加一个模式,让我们称这个表为t1。在另一个表中,t2我有另一个数字,可能与t1中的数字相同或不同。我想要的是从t1开始的数字,这是从t2开始的第一个较小的数字。例如,如果t1中有数字6000,7000和8000,而t2中的数字是7999,则会得到数字为7000的列。
答案 0 :(得分:2)
这是一种方法:
t2
到表格t1
实现:
select t1.*
from t1
inner join t2 on t1.column < t2.number
order by t2.number - t1.column asc
limit 1
注意:我不知道t2
中有多少行,因此我已将on t1.column < t2.number
作为连接条件 - 可能需要对其进行修改以满足您的确切需求。
答案 1 :(得分:-1)
我希望我能正确理解这一点。如果您希望从表中获得的数字仍大于或等于某个其他数字(本例中为7999),您可以这样做:
SELECT number FROM numbers WHERE number <= 7999 ORDER BY number DESC LIMIT 1
答案 2 :(得分:-1)
步骤1执行mysql ghetto行号
步骤2将表连接到它自己的下一个最高row_number
步骤3在t2
中查找数字与下一个最高数字之间的数字第4步享受另一个精彩的星期一。
with temp as (
SELECT number
@curRow := @curRow + 1 AS row_number
FROM t1 l
JOIN (SELECT @curRow := 0) r
order by number
)
with temp2 as (
select o.number,
case when n.number is null
100000000
else
n.number
end higherNum
from temp o
left join temp n on o.row_number = n.row_number+1
)
select *
from temp2 o
inner join t2 n on n.number between o.number and o.higherNum