有时phpMyAdmin生成如下查询:
SELECT * FROM `items` WHERE 1 LIMIT 0 , 30
我想知道WHERE 1在这样的查询中是否有任何意义。
WHERE 1
没有。这意味着ALWAYS TRUE它不会对您的查询产生任何过滤影响。查询计划者可能会忽略该子句。
ALWAYS TRUE
通常在通过连接过滤条件来构建客户端查询时使用。
因此,如果您的基本查询存储在这样的字符串中(示例在PHP中,但是它当然适用于许多其他语言):
$sql = "select * from foo where 1 ";
然后,您可以将许多过滤条件与一个AND子句连接起来,而不管它是不是使用的第一个条件:
AND
// pseudo php follows... if ($filter_by_name) { $sql = $sql . " and name = ? "; } if ($filter_by_number) { $sql = $sql . " and number = ? "; } // so on, and so forth.