字符强制sql排序到最后

Characters to force sql sort to the end

我有以下值:

is_flagged    name
0             Titanic
1             Avatar
0             Jesse
0             トゥー・フォー・ザ・マネー (字幕版)

我想先按 is_flagged 排序,然后再按名称排序。由于各种原因,我需要在一个语句中包含排序。

我如何将 is_flagged=0 的那些放在最后(超出任何字符)。到目前为止我有:

ORDER BY
    CASE WHEN is_flagged IS TRUE THEN name else 'ZZZ' END

基本上,我如何使用字符(现在是'ZZZ')走到最后。请注意我不是在寻找这个答案:

ORDER BY is_flagged DESC, name ASC 

一个简单的技巧是连接您要排序的列:

ORDER BY CONCAT(CASE is_flagged WHEN 0 THEN 'z' ELSE 'a' END, name)
ORDER BY is_flagged DESC
, CASE WHEN is_flagged = 1 THEN sortAvalue1 ELSE NULL END
, CASE WHEN is_flagged = 1 THEN sortAvalue2 ELSE NULL END
, CASE WHEN is_flagged = 1 THEN sortAvalue3 ELSE NULL END
, CASE WHEN is_flagged = 1 THEN sortAvalue4 ELSE NULL END
, CASE WHEN is_flagged = 0 THEN sortBvalue1 ELSE NULL END
, CASE WHEN is_flagged = 0 THEN sortBvalue2 ELSE NULL END
, CASE WHEN is_flagged = 0 THEN sortBvalue3 ELSE NULL END
, CASE WHEN is_flagged = 0 THEN sortBvalue4 ELSE NULL END

这应该有效,即使 is_flagged 值按完全不同的数据类型进行二次排序。

如果排序条件确实共享类型,则可以像这样合并它们CASE WHEN is_flagged = 1 THEN sortAvalue1 ELSE sortBvalue1 END;但根据我的经验,这使得此类查询更难维护。