Hoose Asked: 2020-12-17 07:30:51 +0800 CST 2020-12-17 07:30:51 +0800 CST 2020-12-17 07:30:51 +0800 CST SQL WHERE 中的语法 1=1 772 这条 SQL 语句在 WHERE 子句中有什么“含义”? SELECT * FROM cat_precios WHERE 1=1 ORDER BY PRE_ID 具体来说:WHERE 1=1 我从来没有真正见过这样的东西,我不知道它是如何工作的。你能向我解释一下你在那里的评价吗? 请注意,没有名为 1 的字段 mysql 5 Answers Voted Best Answer Cristina Carrasco 2020-12-17T10:43:46+08:002020-12-17T10:43:46+08:00 在查询中,它意味着如果为真,也就是说,它是多余的,因为它总是为真,在这种情况下它显然是一个无用的条件...... 但通常当您要创建一个WHERE您不知道确切条件的系统时使用它,但它们是即时组合在一起的,因此添加的所有其他条件将始终携带AND。 例子: 您有一个带有多个过滤选项的屏幕: 按名字 按日期 按编号 而且它们都是可选的,因此您的查询可以是: select * from tabla where 但是您不知道它将具有哪些过滤器选项,它可以是全部或无或某些,因此创建了一个通用查询: select * from tabla where 1 = 1 适用于所有情况并根据选项添加条件: - and nombre = 'nombre' - and fecha = '2016-01-01' - and id = 10 然后可以构建查询: select * from tabla where 1 = 1 and id = 10 让过滤器选项保持动态,否则我们将无法知道条件是否应该携带and或是否where必须进入查询。 Garrizano 2020-12-17T07:41:19+08:002020-12-17T07:41:19+08:00 我的想法是,它主要用于在编译时不知道查询将具有的条件数量时使用;但即使在运行时也会生成这些。当您已经拥有WHERE 1=1独奏时,其他条件将连接到它。 它与WHERE = 1或相同WHERE = true。 Neyer 2020-12-17T10:21:01+08:002020-12-17T10:21:01+08:00 where 语句用于过滤从数据集中选择(将要显示)的行,当您在这种情况下放置 where true 时(因为 1 = 1 在技术上会给出 true),这意味着没有限制和将显示的所有记录都与查询相同: SELECT * FROM cat_precios ORDER BY PRE_ID 没有在哪里。 它还用于构建查询,其中将向 where 添加 0 个或多个限制,因为 where 必须至少具有一个条件。 Omar Barrera Valentin 2020-12-17T07:35:24+08:002020-12-17T07:35:24+08:00 类似于这个 1=1?Claro 只是作为程序员的一个条件,其结果是布尔值“真” Jose Angel Machado 2020-06-03T08:50:34+08:002020-06-03T08:50:34+08:00 另一种解决方案是控制条件链。如果它为空,则添加 WHERE,如果它已经包含某些内容,则添加 AND。然后我们将该字符串连接到我们的 sql 语句。结果比 WHERE 1 = 1 更干净一些,但它也需要更多的工作:-) 暗淡 sWhere as string = String.Empty 对于条件中的每个条件 如果 sWhere = String.Empty 那么 sWhere = "哪里" 别的 sWhere = sWhere & " AND " 万一 sWhere = sWhere & 条件.ToString 下一个条件
在查询中,它意味着如果为真,也就是说,它是多余的,因为它总是为真,在这种情况下它显然是一个无用的条件......
但通常当您要创建一个
WHERE
您不知道确切条件的系统时使用它,但它们是即时组合在一起的,因此添加的所有其他条件将始终携带AND
。例子:
您有一个带有多个过滤选项的屏幕:
而且它们都是可选的,因此您的查询可以是:
但是您不知道它将具有哪些过滤器选项,它可以是全部或无或某些,因此创建了一个通用查询:
适用于所有情况并根据选项添加条件:
然后可以构建查询:
让过滤器选项保持动态,否则我们将无法知道条件是否应该携带
and
或是否where
必须进入查询。我的想法是,它主要用于在编译时不知道查询将具有的条件数量时使用;但即使在运行时也会生成这些。当您已经拥有
WHERE 1=1
独奏时,其他条件将连接到它。它与
WHERE = 1
或相同WHERE = true
。where 语句用于过滤从数据集中选择(将要显示)的行,当您在这种情况下放置 where true 时(因为 1 = 1 在技术上会给出 true),这意味着没有限制和将显示的所有记录都与查询相同:
没有在哪里。
它还用于构建查询,其中将向 where 添加 0 个或多个限制,因为 where 必须至少具有一个条件。
另一种解决方案是控制条件链。如果它为空,则添加 WHERE,如果它已经包含某些内容,则添加 AND。然后我们将该字符串连接到我们的 sql 语句。结果比 WHERE 1 = 1 更干净一些,但它也需要更多的工作:-)
暗淡 sWhere as string = String.Empty
对于条件中的每个条件
如果 sWhere = String.Empty 那么
sWhere = "哪里"
别的
sWhere = sWhere & " AND "
万一
sWhere = sWhere & 条件.ToString
下一个条件