温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - What is the use of 'WHERE TRUE' in MySQL
mysql

其他 - MySQL中“ WHERE TRUE”的用法是什么

发布于 2020-05-01 14:11:48

我正在研究同事的旧项目,发现了她的代码WHERE TRUE AND ID='1' AND STAT='1'我想删除,TRUE AND以便查询成为WHERE ID='1' AND STAT='1'并获得相同的结果。

我知道我们可以将TRUE布尔值用作搜索“某物为真”的布尔值,WHERE FLAG = TRUE并且此MySQL文档指出

常量TRUE和FALSE分别取值为1和0。常量名称可以用任何字母大写。

我也试过了,SELECT * FROM MYTABLE WHERE TRUE但是和SELECT * FROM MYTABLE

TRUE她查询的目的是什么?

查看更多

提问者
Darjeeling
被浏览
44
Robert Columbia 2016-06-16 10:46

它没有特定的功能目的。如果您的同事遵守特定的样式指南,该指南建议所有SELECT查询都具有显式的WHERE子句,则您的同事可能已将其包括在内。如果未提供显式的WHERE子句,则默认为选择所有行。添加始终为true的WHERE子句将具有相同的效果。

该查询可能产生的另一种方式是,它是由代码生成工具生成的,由于该代码的生成方式,该代码生成工具始终必须在WHERE子句中进行编写。

例如:

myQuery = "SELECT X FROM Y WHERE " + ConditionMet(data)?" AccountID = '" + AcctId + "'" : "1=1";

这意味着如果ConditionMet(data)为true,则仅返回AccountID与您传入的AcctId匹配的行。如果为false,则返回所有行。

添加“虚拟” 1 = 1可使代码生成器更易于编写。

同样,添加始终为假的WHERE子句(例如“ WHERE 1 = 0”)将导致返回零行。