为什么sql查询有"where 1 = 1"

Jer*_*oyd 8 sql where-clause

我正在经历一些我正在维护的查询,并且程序员已经向我提出了"其中1 = 1"的查询,似乎总是评估为真.

这有好处吗?

重复: 为什么有人在SQL子句中使用WHERE 1 = 1 AND?

这个问题不是这个问题的答案.

WHERE子句:

select * from table where 1=1 and sStatus not in ('status1','status2','status3')
Run Code Online (Sandbox Code Playgroud)

没有编程或如果声明推动和在那里.直接查询.

如果你可以取消关闭它,我想知道是否有目的,以便我可以重写并删除1 = 1,如果没有必要.

Tun*_*dey 16

是动态查询吗?有时,在基于可选参数构建动态查询时,这很有用.


sth*_*sth 11

如果您自动希望为查询添加限制,则可以让您的工作更轻松:

string sql = "SELECT * FROM table WHERE 1=1";

if (someflag) {
  sql += " AND valid = 1";
}

if (someotherflag) {
  sql += " AND special = 1";
}

execute(sql);
Run Code Online (Sandbox Code Playgroud)

没有WHERE 1 = 1你会在每种情况下检查它是否是你添加(然后使用WHERE ...)的第一个限制,或者你是否已经添加了一些其他限制(然后添加AND ...).


Pau*_*xon 10

如果您正在动态构建where子句,则可能有点懒惰,并假设您添加的每个子句都可以以"AND"作为前缀,例如

$str="select foo from bar where 1=1";

if ($filter1)
{
    $str.=" and col1='frobozz'";
}
Run Code Online (Sandbox Code Playgroud)


Jay*_*y S 6

当我在进行一些懒惰的编程时,我将它用于动态where子句,并且不想总是检查该子句是否为空以确定我现在是否需要在动态子句之间使用"AND".