SQL:当第一列为空时对第二列进行排序
我有一个有两列字符串的表:“type”和“subtype”。 我想按子类型对项目进行排序。但是,某些行的子类型可能为空。在本例中,我希望使用“type”列中的值进行排序。SQL:当第一列为空时对第二列进行排序,sql,Sql,我有一个有两列字符串的表:“type”和“subtype”。 我想按子类型对项目进行排序。但是,某些行的子类型可能为空。在本例中,我希望使用“type”列中的值进行排序。 例如,如果我有此表: type subtype Bass Plucked Bass Bass Hard Bass Bass Digital Bass Pad Atmosphere Bass Pad Choir 我希望排序结果为: type subtype Pad
例如,如果我有此表:
type subtype
Bass Plucked Bass
Bass Hard Bass
Bass Digital Bass
Pad Atmosphere
Bass
Pad Choir
我希望排序结果为:
type subtype
Pad Atmosphere
Bass
Pad Choir
Bass Digital Bass
Bass Hard Bass
Bass Plucked Bass
子类型按字母顺序排序,只有一行子类型为空时才使用其类型值,因此“Bass”介于“Atmosphere”和“Choir”之间
有什么办法吗?通过编写以下查询,我只在开始时获得了所有空类型:
SELECT type, subtype FROM my_table ORDER BY subtype.name, type.name
我也尝试过,但没有成功:
SELECT type, subtype FROM my_table ORDER BY CASE WHEN subtype.name IS NOT NULL THEN subtype.name ELSE type.name END```
使用合并()
:
我不确定您的示例查询试图做什么。几乎在任何SQL引擎中,子类型.name
只会返回语法错误
编辑:
根据您的评论,subtype
中的值是空字符串,而不是NULL
。您可以使用:
order by (case when subtype <> '' then subtype else type end)
order by(子类型为“”时为大小写,然后子类型为else类型为end)
使用coalesce()
:
我不确定您的示例查询试图做什么。几乎在任何SQL引擎中,子类型.name
只会返回语法错误
编辑:
根据您的评论,subtype
中的值是空字符串,而不是NULL
。您可以使用:
order by (case when subtype <> '' then subtype else type end)
order by(子类型为“”时为大小写,然后子类型为else类型为end)
是。名称
没有意义,复制粘贴问题。我尝试使用合并:SELECT type,subtype FROM my_table ORDER BY coalesce(subtype,type)
,但它不起作用,我首先得到所有子类型为空的行,然后其他行按子类型正确排序。谢谢,它与空字符串比较一起工作!是。名称没有意义,复制粘贴问题。我尝试使用合并:SELECT type,subtype FROM my_table ORDER BY coalesce(subtype,type)
,但它不起作用,我首先得到所有子类型为空的行,然后其他行按子类型正确排序。谢谢,它与空字符串比较一起工作!