【问题标题】:Why the (1=1) in the Where clause? [duplicate]为什么在 Where 子句中使用 (1=1)? [复制]
【发布时间】:2013-04-06 22:39:35
【问题描述】:

此查询来自答案here。 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 

【问题讨论】:

标签: sql where-clause


【解决方案1】:

从代码生成动态 SQL 时,只需以 WHERE (1=1) 开头,然后根据需要连接\附加 AND <Condition> 会很有用。不确定该答案是否是这种情况,但可能是基于一些用于生成 SQL 的代码。

【讨论】:

  • 出于这个原因,他们在我的工作中这样做。我个人认为这是我见过的最蹩脚的东西。但我在工作中这样编码,以适应我团队中的其他开发人员。有正确,就有酷。
猜你喜欢
  • 2010-09-19
  • 2012-01-11
  • 2012-02-26
  • 2011-10-22
  • 2023-01-26
  • 1970-01-01
  • 2014-11-11
  • 2018-08-21
相关资源
最近更新 更多