MySQL同一列多值查询无结果求助:SELECT语句AND条件问题
解决MySQL多值匹配查询的问题
你的查询语句SELECT * FROM users WHERE Number='1212' AND Number='0921'之所以没有返回结果,核心原因是同一个Number字段不可能同时等于两个不同的值——AND逻辑要求两条条件必须同时满足,这在实际数据中是不可能成立的,自然查不到任何记录。
要实现匹配多个值的需求,你可以用以下两种常用且高效的方法:
方法一:使用IN关键字(推荐)
IN是MySQL中专门用于匹配列值在指定集合中的语法,写法简洁、可读性强,尤其适合匹配多个固定值的场景:
SELECT * FROM `users` WHERE Number IN ('1212', '0921');
方法二:使用OR关键字
如果需要为每个匹配值搭配额外的条件(比如不同的状态过滤),可以用OR来组合多个判断:
SELECT * FROM `users` WHERE Number='1212' OR Number='0921';
额外注意事项
- 数据类型要匹配:如果
Number是数值类型(比如INT),就去掉值的引号(写成IN(1212, 921));如果是字符串类型,必须保留引号,避免隐式类型转换影响查询性能或结果准确性。 - 大数据量场景:当匹配的数值超过10个时,
IN的性能通常优于多个OR组合,MySQL会对IN列表做自动优化处理。
内容的提问来源于stack exchange,提问作者user9578149
相关产品推荐
相关产品推荐

