NOT IN用于排除指定列表中的记录,语法为SELECT 列名 FROM 表名 WHERE 列名 NOT IN (值1, 值2, ...); 例如查询非北京、上海的用户返回广州和深圳的数据;需注意NULL会导致表达式结果为UNKNOWN,使查询无结果,解决方法是添加city IS NOT NULL条件或使用NOT EXISTS、LEFT JOIN替代,尤其在子查询含NULL时推荐用NOT EXISTS或LEFT JOIN以避免问题。

在MySQL中,NOT IN 用于筛选不包含在指定列表中的记录。它通常配合 WHERE 子句使用,帮助我们排除某些特定值。
SELECT 列名 FROM 表名 WHERE 列名 NOT IN (值1, 值2, ...);
例如,有一个用户表 users,结构如下:
id | name | city ---|-------|------ 1 | 张三 | 北京 2 | 李四 | 上海 3 | 王五 | 广州 4 | 赵六 | 深圳 5 | 孙七 | 北京如果我们想查询不在北京和上海的用户:
SELECT * FROM users WHERE city NOT IN ('北京', '上海');结果会返回城市为广州和深圳的记录(王五、赵六)。
NULL 值的影响:如果 NOT IN 后面的子查询或列表中包含 NULL,整个表达式可能不会按预期工作。
比如下面这条语句:
SELECT * FROM users WHERE city NOT IN ('北京', '上海', NULL);即使表中有广州、深圳的数据,也可能查不出结果。因为任何值与 NULL 比较都会返回 UNKNOWN,导致条件不成立。
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
508
解决方法是显式排除 NULL:
SELECT * FROM users WHERE city NOT IN ('北京', '上海') AND city IS NOT NULL;NOT IN 也常用于子查询场景。例如,找出没有订单记录的用户:
SELECT id, name FROM users WHERE id NOT IN (SELECT user_id FROM orders);这里假设 orders 表保存了订单数据,user_id 是外键。这条语句会返回所有未下单的用户。
但要注意:如果 子查询结果中有 NULL,NOT IN 会失效。建议改写为使用 NOT EXISTS 或 LEFT JOIN 更安全。
在复杂查询中,尤其是涉及 NULL 和性能问题时,可以考虑以下替代方式:
基本上就这些。NOT IN 简单易用,但在实际开发中要注意 NULL 和性能问题,避免误查数据。
以上就是mysql不包含(not in)如何使用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号