我有一个包含列数的表。除主键列之外的大多数列都可以具有空值。
我需要一个查询来查询此表并以这样的方式获取结果:应该显示除主列之外的所有列都具有空值的记录第一。
在下面的示例中,EmpId和name是主键,如预期结果所示,没有非主列数据的记录应位于结果之上。
我尝试过基于所有非主要列的排序,但没有得到预期的结果。
答案 0 :(得分:2)
使用nulls first
并按所有检索到的列排序。
Select empid,
name,
address,
phone,
zip,
gender
from TABLE
Order by empid nulls first,
name nulls first,
address nulls first,
phone nulls first,
zip nulls first,
gender nulls first;
你真的应该提供你尝试过的查询。
答案 1 :(得分:0)
如果所有的地址,电话,邮编,性别都是NULL,那么先放行。另外还有pk等等。
Select empid,
name,
address,
phone,
zip,
gender
from TABLE
Order by case when coalesce(address, phone, zip, gender) is null then 0 else 1 end,
empid, name, address, phone, zip, gender;