在IFNULL中得到最近的结果

时间:2009-08-27 02:56:36

标签: mysql nearest-neighbor ifnull

我有一个维护脚本,它将一堆数据从一个数据库转储到另一个数据库。

我正在尝试将数据作为

  SELECT id, IFNULL(rank1,(SELECT rank2 
  FROM table  
  WHERE rank1 IS NOT NULL and 
        rank2<rank2 of current row 
  ORDER BY rank2 LIMIT 1)) FROM table

我试图使用当前行的rank2获得的是最接近的rank2,其中rank1不为null。我假设rank1是rank2的有效替代

所以,我相信我有两个问题。

  
      
  1. 我认为我没有在嵌套的select语句中使用rank2
  2.   
  3. 我不知道怎么说'最接近{​​{1}}当前。
  4.   

我对Rank1的值范围为0-20,000,rank2的范围为0-150,000(不确定为什么这很重要)。排名之间没有有效的相关性。

Rank1总是一个更可靠的数字,但通常是空的,所以我试图用这种替代品来捏造我的订单。

以下是一些用作示例的示例数据

id            rank1            rank2
1             120,000          14,000
2             120,000          18,420
3             126,000          15,500
4             85,000            NULL
5             75,000           16,000
6             70,000           15,700
7             68,000            NULL
8             42,000            NULL
9             26,000            NULL
10            21,500           8,000

我希望能够获得2,5,4,6,7,3,1,8,9,10的订单。或接近那个。基本上,当我为rank2获得null时,获得最接近rank1的最近rank2。

我不认为这是'完美',但比排名第一更好。

1 个答案:

答案 0 :(得分:0)

我不是100%肯定你在问什么。将COALESCE(rank1,rank2,rankX)返回给你的第一个非空值值吗?