Php 获取具有最近匹配编号的列
我有一个数字表,它们是递增的,但不是以某种模式递增的,我们称之为t1表。在另一个表中,t2有另一个数字,可能和t1中的数字相同,也可能不同。我想要的是t1中的数字,也就是t2中第一个较小的数字。例如,如果t1中有数字6000、7000和8000,t2中的数字是7999,则会得到数字为7000的列。有一种方法: 将数字从t2连接到表t1 将每行与数字进行比较 按比较排序,选择第一行 实施:Php 获取具有最近匹配编号的列,php,mysql,Php,Mysql,我有一个数字表,它们是递增的,但不是以某种模式递增的,我们称之为t1表。在另一个表中,t2有另一个数字,可能和t1中的数字相同,也可能不同。我想要的是t1中的数字,也就是t2中第一个较小的数字。例如,如果t1中有数字6000、7000和8000,t2中的数字是7999,则会得到数字为7000的列。有一种方法: 将数字从t2连接到表t1 将每行与数字进行比较 按比较排序,选择第一行 实施: select t1.* from t1 inner join t2 on t1.column < t2
select t1.*
from t1
inner join t2 on t1.column < t2.number
order by t2.number - t1.column asc
limit 1
注意:我不知道t2中有多少行,所以我在t1.column
SELECT number FROM numbers WHERE number <= 7999 ORDER BY number DESC LIMIT 1
第1步确定犹太人区的行号 步骤2:将表连接到下一个最高的行号上 步骤3:找出数字和t2中下一个最高数字之间的数字 第四步享受另一个美好的星期一
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
我不认为ABS在这种情况下是正确的,因为他想要的是第一个较小的数字。我已经这样做了,而且效果很好,但这并不完全是我想要的。谢谢