sql语句查询解决方法

sql语句查询
sql语句查询解决方法
这样的表,数据很多,我想用一条查询语句得到,根据isfree字段查询出:共20条数据,其中包括10条是为true,10条为false的结果,都要求最新的(order by id desc ),问题应该说的很明白,先谢谢各位的帮忙!
------解决方案--------------------
大概就是这样:
select *
from 
(
select *,
       ROW_NUMBER() over(partition by isfree order by id desc) rownum
from tb
)t
where rownum <= 10

------解决方案--------------------

select * from
(select top 10 * from [表名] where isfree='true' order by id desc) a
union all
select * from
(select top 10 * from [表名] where isfree='false' order by id desc) b