0

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

我正在尝试获取数据

  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 不为空。我假设 rank1 是 rank2 的有效替代品

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

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

我对 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 空
5 75,000 16,000
6 70,000 15,700
7 68,000 空
8 42,000 空
9 26,000 空
10 21,500 8,000

我希望能拿回 2,5,4,6,7,3,1,8,9,10 的订单。或类似的东西。基本上,当我对 rank2 有一个空值时,为最近的 rank1 获取最近的 rank2。

我不认为这是“完美的”,但比仅在 rank1 上排序要好。

4

1 回答 1

0

我不是 100% 确定你在问什么。COALESCE(rank1, rank2, rankX) 它将返回第一个非空值的位置对您有用吗?

于 2009-08-27T03:17:30.163 回答