MySQL 按子查询结果排序。最后为空,> 0 为 1



我有一个查询,希望以特定的方式进行排序。首先,如果";antall";是>0,我希望它被排序为1,这样每一行都有antall>0将由.tittel内部排序。如果antall为NULL,我希望它是最后一个。

SELECT a.tittel,
(SELECT SUM(antall) FROM butikk_lager WHERE butikkdata_nr=ai.valueNumber 
AND lokasjon NOT LIKE 'Uts%' AND lokasjon NOT LIKE 'Rekl%' 
AND ( varenr='TK180126' OR variant_artid LIKE '%TK180126%' ) LIMIT 0,1 ) AS antall
FROM artikler AS a 
JOIN kategorier AS k ON a.kategori_id=k.id 
JOIN artikler_innhold AS ai ON a.id=ai.artId AND ai.feltId=22
WHERE k.type=24 ORDER BY ?, a.tittel 

考虑:

order by (antal > 0) desc, a.title

如果antal大于0,则(antal > 0)产生1,如果0或更小则产生0,并且如果null则产生null。您可以对其进行降序排序:MySQL在按该方向排序时将null放在最后。

如果您特别希望antalNULL时是最后一个,那么:

order by (antal is not null) desc, title desc

然而,我认为GMB的降序解决方案也应该有效。

最新更新