我有一个维护脚本,它将一堆数据从一个数据库转储到另一个数据库。
我正在尝试获取数据
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 的有效替代品
所以,我相信我有两个问题。
- 我认为我没有 rank2 可以在嵌套的 select 语句中使用
- 我不知道怎么说'最接近
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 上排序要好。