1
此查詢從答案here。 where子句中有(1 = 1),但執行計劃相同(SQL Express 2008R2)。爲什麼Where子句中的(1 = 1)?
我猜這是從舊時代的神器?
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
DUP:[爲什麼有人在SQL子句中使用WHERE 1 = 1和?](http://stackoverflow.com/questions/242822/why-would-someone-use-where-1-1-and -conditions-in-a-sql-clause) –
(1 = 1)等於true,嘗試刪除where語句並查看發生了什麼。 – DragonZero
有時1 = 1或1 = 2用於執行某些總是返回true或false的內容,以幫助原始程序員開發其邏輯。然後,他們只是把它留在那裏。 –