AND OR多条件查询
AND 和 OR 是 WHERE 里最常用的两个连接符。AND 表示「都得满足」,OR 表示「满足一个就行」。
-- 状态正常 且 等级大于10
SELECT * FROM users WHERE status = 1 AND level > 10;
-- VIP 或者 等级大于50,满足一个就查出来
SELECT * FROM users WHERE is_vip = 1 OR level > 50;
重点来了:AND 的优先级比 OR 高。如果混着写又不加括号,条件就很容易连错。
-- 错:实际变成 status=1 AND level>10,或者只要是 vip 就全放出来
SELECT * FROM users WHERE status = 1 AND level > 10 OR is_vip = 1;
-- 对:用括号分组,想查什么一目了然
SELECT * FROM users WHERE status = 1 AND (level > 10 OR is_vip = 1);
PHP 里拼条件也是一个套路,把条件先放进数组,再用 implode 拼起来,比手写一长串靠谱。
<?php
$where = ["status = 1"]; // 固定条件
if ($kw) $where[] = "(name LIKE '%$kw%' OR nick LIKE '%$kw%')"; // 关键字两字段都搜
$sql = "SELECT * FROM users WHERE " . implode(' AND ', $where);
记住一句:AND 和 OR 混着用,括号一定要加上。
标签:MySQL,SQL查询,数据库
说点什么 0