goric Asked: 2011-01-22 05:26:14 +0800 CST2011-01-22 05:26:14 +0800 CST 2011-01-22 05:26:14 +0800 CST 为什么有人会在查询中输入“where 1=1”? 772 我今天在我们的数据库中遇到了一个视图,其中 where 子句中的第一条语句是where 1 = 1. 这不应该对每条记录都返回 true 吗?如果它不过滤任何记录,为什么有人会写这个? sql-server-2005 4 个回答 Voted Best Answer BenV 2011-01-22T05:42:31+08:002011-01-22T05:42:31+08:00 一些动态查询构建器包含此条件,以便可以添加任何“真实”条件,AND而无需像if (first condition) 'WHERE' else 'AND'. ern0 2011-01-22T09:14:19+08:002011-01-22T09:14:19+08:00 如果您的程序中有许多生成相似查询的 SQL 语句构建点,则可以通过此技巧标记已检查的一个。如果这句话是关于计数的,你可以使用下面的代码,这样你就可以42从 SQL 日志中提取出来。 select count(42) from table SchwartzE 2011-01-22T06:38:36+08:002011-01-22T06:38:36+08:00 它提供了一种始终为真的情况,因此它不会影响结果,但您知道 WHERE 子句中已经有一项。 Marc 2021-04-28T14:24:49+08:002021-04-28T14:24:49+08:00 它可以帮助我处理我经常使用的测试查询,并且我添加和删除了多个条件 请注意,在 oracle 中,您可以使用 -- SELECT tablea.*, --tableb.*, tablec.* from dual ,tablea --,tableb ,tablec where 1=1 --and tablea.a = tableb.a and tablea.a = tablec.a and tablea = :value 我可以轻松地从查询中添加或删除 tableb
一些动态查询构建器包含此条件,以便可以添加任何“真实”条件,
AND
而无需像if (first condition) 'WHERE' else 'AND'
.如果您的程序中有许多生成相似查询的 SQL 语句构建点,则可以通过此技巧标记已检查的一个。如果这句话是关于计数的,你可以使用下面的代码,这样你就可以
42
从 SQL 日志中提取出来。它提供了一种始终为真的情况,因此它不会影响结果,但您知道 WHERE 子句中已经有一项。
它可以帮助我处理我经常使用的测试查询,并且我添加和删除了多个条件
请注意,在 oracle 中,您可以使用 --
我可以轻松地从查询中添加或删除 tableb