有一张表,字段有4个,新闻ID,新闻标题,新闻作者,新闻内容
数据内容是:a,c,d,f
ab,d,d,f
c,a,d,
ac,b,
要求是:1.按照数据表中的数据长度来排序(字段最少的排在最前面,如第四条数据就在最前面),
2.新闻的id必须有a的排在最前面
数据内容是:a,c,d,f
ab,d,d,f
c,a,d,
ac,b,
要求是:1.按照数据表中的数据长度来排序(字段最少的排在最前面,如第四条数据就在最前面),
2.新闻的id必须有a的排在最前面
ORDER BY
CASE WHEN 新闻ID IS NOT NULL THEN 1 ELSE 0 END
+CASE WHEN 新闻标题 IS NOT NULL THEN 1 ELSE 0 END
+CASE WHEN 新闻作者 IS NOT NULL THEN 1 ELSE 0 END
+CASE WHEN 新闻内容 IS NOT NULL THEN 1 ELSE 0 END,
CASE WHEN CHARINDEX('a',新闻ID) > 0 THEN 0 ELSE 1 END,
新闻ID;
insert into @A select 'a','c','d','f'
union all select 'ab','d','d','f'
union all select 'c','a','d',null
union all select 'ac','b',null,null
select * from @A
order by case when 新闻id is null then 1 else 5 end,
case when 新闻标题 is null then 1 else 5 end,
case when 新闻作者 is null then 1 else 5 end,
case when 新闻内容 is null then 1 else 5 end,
case when CHARINDEX('a',新闻id )>0 then 2 else 3 end
新闻id 新闻标题 新闻作者 新闻内容
---------- ---------- ---------- ----------
ac b NULL NULL
c a d NULL
a c d f
ab d d f(4 行受影响)