MySQL表如何按数字字段排序,并填充空间隙?

MySQL表如何按数字字段排序,并填充空间隙?,mysql,sql,database,Mysql,Sql,Database,假设我有这样的表: id | name | priority --------------------- 1 | ... | null 2 | ... | 1 3 | ... | 4 4 | ... | 2 我需要的是一个sql查询,它将选择按优先级排序的所有RAW,并用null-值填充间隙 结果: id | name | priority --------------------- 2 | ... | 1 4 | ... | 2 1 | ... | null 3

假设我有这样的表:

id | name | priority
---------------------
1  | ...  | null
2  | ...  | 1
3  | ...  | 4
4  | ...  | 2
我需要的是一个sql查询,它将选择按优先级排序的所有RAW,并用
null
-值填充间隙

结果:

id | name | priority
---------------------
2  | ...  | 1
4  | ...  | 2
1  | ...  | null
3  | ...  | 4

我知道如何使用
orderby
,但是
null-
值总是在查询结果的末尾或开头。。。不知道如何用
null
s来填补空白,同时保持
priority
-顺序。

假设有多行具有
null
优先级,哪一行应该介于2和4之间?@GregSchmidt,与哪一行无关。哪个版本的MySql?基本出发点是创建一个带有序号的表,左键将其与非空的
优先级
值连接,以获取所有缺少的优先级。然后,您必须以某种方式将空优先级替换为这些优先级,但我不确定如何在SQL中做到这一点。联接将创建一个叉积,而不是一次替换一个叉积。也许有一些方法可以做到这一点,我对窗口函数还不是很熟悉。我希望这能给你一个开始的方向。在您发布您尝试的解决方案之前,我们无法为您做太多事情。所以这不是免费的编码服务。