Jos*_*gie 2 t-sql sql-server top-n
T-SQL:需要前N个以总是返回N行,即使为null或空白
通常,命令
Select Top 5 * FROM ourTable
Run Code Online (Sandbox Code Playgroud)
将返回最多5行,但更少,具体取决于行是否存在。
我想确保它总是返回5行(或通常为N行)。实现此目的的语法是什么?
这个想法是将“ FirstOrDefault”的LINQ概念概括为“ First_N_OrDefault”,但是使用TSQL而不是LINQ。
显然,“额外”行将具有空列或空列。
这适用于使用SSMS 14.0.17的Microsoft SQL Server 2014
我想尽可能使用“ TOP”语法,因此它不同于可能的重复语法。而且,如下所述,这可能是可以在系统的不同层上解决的问题,但是对于TSQL也很高兴。
select top (5) c1, c2, c3 from (
select top (5) c1, c2, c3, 0 as priority from ourTable
union all
select c1, c2, c3, 1 from (values (null, null, null), (null, null, null), (null, null, null), (null, null, null), (null, null, null)) v (c1, c2, c3)
) t
order by priority
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |