Mel*_*lon 198 mysql sql database
我看到有些人使用语句来查询MySQL数据库中的表,如下所示:
select * from car_table where 1=1 and value="TOYOTA"
Run Code Online (Sandbox Code Playgroud)
但1=1这里的意思是什么?
gbn*_*gbn 314
通常当人们建立SQL语句时.
添加时,and value = "Toyota"您不必担心之前是否存在条件,或者只是在哪里.优化者应该忽略它
没有魔力,只是实用
示例代码:
commandText = "select * from car_table where 1=1";
if (modelYear <> 0) commandText += " and year="+modelYear
if (manufacturer <> "") commandText += " and value="+QuotedStr(manufacturer)
if (color <> "") commandText += " and color="+QuotedStr(color)
if (california) commandText += " and hasCatalytic=1"
Run Code Online (Sandbox Code Playgroud)
否则你必须有一套复杂的逻辑:
commandText = "select * from car_table"
whereClause = "";
if (modelYear <> 0)
{
if (whereClause <> "")
whereClause = whereClause + " and ";
commandText += "year="+modelYear;
}
if (manufacturer <> "")
{
if (whereClause <> "")
whereClause = whereClause + " and ";
commandText += "value="+QuotedStr(manufacturer)
}
if (color <> "")
{
if (whereClause <> "")
whereClause = whereClause + " and ";
commandText += "color="+QuotedStr(color)
}
if (california)
{
if (whereClause <> "")
whereClause = whereClause + " and ";
commandText += "hasCatalytic=1"
}
if (whereClause <> "")
commandText = commandText + "WHERE "+whereClause;
Run Code Online (Sandbox Code Playgroud)
Rub*_*ias 49
如果该查询是动态构建的,原始作者可能不想考虑一组空条件,因此以这样的结尾:
sql = "select * from car_table where 1=1"
for each condition in condition_set
sql = sql + " and " + condition.field + " = " + condition.value
end
Run Code Online (Sandbox Code Playgroud)
Jon*_*ton 37
1=1将永远是真的,所以这value="TOYOTA"一点是重要的.
你可以在几个场景中得到这个,包括:
生成的SQL:where如果您不必添加第一个条件,则更容易创建生成复杂语句,因此通常将a 1=1放在开头,并且所有其他条件都可以附加一个And
调试:有时您会看到人们放在1=1where条件的顶部,因为它使他们能够在调试查询时自由切换并更改其余条件.例如
select * from car_table
where 1=1
--and value="TOYOTA"
AND color="BLUE"
--AND wheels=4
Run Code Online (Sandbox Code Playgroud)
必须要说的是,这不是特别好的做法,通常不应该出现在生产代码中.它甚至可能无法帮助优化查询.
Udo*_*eld 16
它只是一个永远真实的表达.有些人用它作为解决方法.
他们有一个静态语句,如:
select * from car_table where 1=1
Run Code Online (Sandbox Code Playgroud)
所以他们现在可以在where子句中添加一些内容
and someother filter
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62488 次 |
| 最近记录: |