字符强制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
;但根据我的经验,这使得此类查询更难维护。
我有以下值:
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
;但根据我的经验,这使得此类查询更难维护。