为什么Where子句中的(1 = 1)?

sur*_*asb 1 sql where-clause

此查询来自此处的答案.where子句中有(1 = 1),但执行计划是相同的(SQL Express 2008R2).

我猜它是过去的神器?

SELECT 
     ind.name 
    ,ind.index_id 
    ,ic.index_column_id 
    ,col.name 
    ,ind.* 
    ,ic.* 
    ,col.* 
FROM sys.indexes ind 

INNER JOIN sys.index_columns ic 
    ON  ind.object_id = ic.object_id and ind.index_id = ic.index_id 

INNER JOIN sys.columns col 
    ON ic.object_id = col.object_id and ic.column_id = col.column_id 

INNER JOIN sys.tables t 
    ON ind.object_id = t.object_id 

WHERE (1=1) 
    AND ind.is_primary_key = 0 
    AND ind.is_unique = 0 
    AND ind.is_unique_constraint = 0 
    AND t.is_ms_shipped = 0 
ORDER BY 
    t.name, ind.name, ind.index_id, ic.index_column_id 
Run Code Online (Sandbox Code Playgroud)

mut*_*tex 8

从代码生成动态SQL时,根据需要以一个WHERE (1=1)then concatenate\append 开始是很有用的AND <Condition>.不确定这个答案是否就是这种情况,但也许它是基于一些生成SQL的代码.