首页 > 解决方案 > MySQL 按子查询结果排序。空最后,> 0 为 1

问题描述

我有一个查询,我想以特定方式排序。首先,如果“antall”> 0,我希望它被排序为 1,以便 antall > 0 的每一行都将在内部由 a.tittel 排序。如果 antall IS 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 

标签: mysqlsqlsubquerysql-order-bysql-null

解决方案


考虑:

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

(antal > 0)产生1ifantal大于00如果它是0或小于 ,null如果它是null。您可以对其进行降序排序:MySQLnull在按该方向排序时将 s 放在最后。


推荐阅读