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中做到这一点。联接将创建一个叉积,而不是一次替换一个叉积。也许有一些方法可以做到这一点,我对窗口函数还不是很熟悉。我希望这能给你一个开始的方向。在您发布您尝试的解决方案之前,我们无法为您做太多事情。所以这不是免费的编码服务。