MySQL “where 1=1” 语句
在使用 MySQL 进行数据查询时,可能会遇到一种写法是 where 1=1。此时,这个条件语句并没有具体限定查询条件,最终查询的结果会包含所有记录。那么,这个语句有什么作用呢?
阅读更多:MySQL 教程
作用
where 1=1 语句的主要作用是便于后续动态拼接 SQL 查询语句。在一些特定场景下,我们需要根据不同的参数拼接 SQL 查询语句,如:
SELECT *
FROM table_name
WHERE 1=1
AND column1 = value1
AND column2 = value2
AND ...
此时,我们就可以根据需要动态拼接查询条件,如下所示:
String sql = "SELECT * FROM table_name WHERE 1=1 ";
if (StringUtils.isNotBlank(param1)) {
sql += " AND column1 = " + param1;
}
if (StringUtils.isNotBlank(param2)) {
sql += " AND column2 = " + param2;
}
// ...
使用 where 1=1 可以确保查询条件始终存在,我们只需关注后续条件是否成立即可。
示例
假设我们有一张学生信息表,其中包含 id、name、age、gender 等属性。我们希望查询所有年龄小于 18 岁的学生信息。这个查询语句可以写成:
SELECT * FROM student WHERE 1=1 AND age < 18;
如果我们希望根据参数来动态拼接 SQL 查询语句,可以使用如下代码:
String sql = "SELECT * FROM student WHERE 1=1 ";
if (age != null) {
sql += " AND age < " + age;
}
// ...
总结
where 1=1 语句本身并没有实际的查询条件限定,它主要是为了后续动态拼接 SQL 查询语句,便于程序员进行参数化查询。使用 where 1=1 可以使查询条件始终存在,避免了参数为空或条件不成立时的 SQL 语法错误。
极客教程