Sql server 联合尝试在sql server中对结尾处的null进行排序时出错

Sql server 联合尝试在sql server中对结尾处的null进行排序时出错,sql-server,union,Sql Server,Union,我试图按照某种特定的顺序对数据库进行排序,但我希望所有的值都为null,因此我选择了所有不为null的值,然后选择了所有为null的值,并尝试使用Union将它们连接起来。。比如: SELECT * FROM preferences WHERE preferenceOrder IS NOT NULL ORDER BY preferenceOrder ASC UNION SELECT * FROM preferences WHERE

我试图按照某种特定的顺序对数据库进行排序,但我希望所有的值都为null,因此我选择了所有不为null的值,然后选择了所有为null的值,并尝试使用Union将它们连接起来。。比如:

SELECT * FROM preferences WHERE preferenceOrder IS NOT NULL 
                               ORDER BY preferenceOrder ASC
UNION

SELECT * FROM preferences WHERE preferenceOrder IS NULL 
                               ORDER BY preferences ASC
但是服务器抛出一个错误:

Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'union'.
但是我不知道是什么错误。。上面的句子有什么错


谢谢

我认为你应该
order by(如果preferenceOrder为空,那么0 else 1 end),preferenceOrder
而不是这个联合。

我认为你应该
order by(如果preferenceOrder为空,那么0 else 1 end),preferenceOrder
而不是这个联合。

哦,给我一分钟,我会试试看!嗯,现在它说Msg 102,Level 15,State 1,第7行“')附近的语法不正确(如果preferenceOrder为null,则为0,否则为1 END)是的,END修复了它,但没有按照我希望的方式排序,除非我这样做:按国家顺序选择*(如果preferenceOrder为null,则为99999,否则preferenceOrder END),优先顺序使用此选项是否更好:从国家/地区按合并顺序选择*(排序器,999999)ASC?我不想用它,因为99999。。如果我的表超过了那个数字怎么办?谢谢,我刚刚使用了你的查询的修改版本。哦,给我一分钟,我会试试的!嗯,现在它说Msg 102,Level 15,State 1,第7行“')附近的语法不正确(如果preferenceOrder为null,则为0,否则为1 END)是的,END修复了它,但没有按照我希望的方式排序,除非我这样做:按国家顺序选择*(如果preferenceOrder为null,则为99999,否则preferenceOrder END),优先顺序使用此选项是否更好:从国家/地区按合并顺序选择*(排序器,999999)ASC?我不想用它,因为99999。。如果我的表超过了那个数字怎么办?谢谢,我只是使用了你的查询的修改版本。