mysql contains 不包含
在MySQL数据库中,我们经常会用到两个关键字来筛选查询结果,分别是LIKE
和IN
。LIKE
用于模糊匹配字符串,而IN
则用于匹配一系列的值。但是在某些情况下,我们需要查询不包含某个特定值的结果,这时就需要用到NOT LIKE
和NOT IN
,或者使用NOT EXISTS
来实现。
NOT LIKE
NOT LIKE
用于查询不包含特定字符串的结果。例如,如果我们想要查询所有名字中不包含”John”的用户:
SELECT * FROM users
WHERE name NOT LIKE '%John%';
这个查询会返回所有名字中不包含”John”的用户信息。关键点在于NOT LIKE '%John%'
这个条件,它表示不包含”John”的字符串。
NOT IN
NOT IN
用于查询不包含在指定值列表中的结果。例如,如果我们想要查询所有不属于某个组的用户:
SELECT * FROM users
WHERE group_id NOT IN (1, 2, 3);
这个查询会返回所有group_id
不在(1, 2, 3)
这个值列表中的用户信息。
NOT EXISTS
除了使用NOT IN
外,还可以使用NOT EXISTS
来实现查询不包含特定值的结果。例如,如果我们想要查询所有没有订单的用户:
SELECT * FROM users u
WHERE NOT EXISTS (
SELECT 1 FROM orders o
WHERE u.user_id = o.user_id
);
这个查询会返回所有users
表中没有对应订单的用户信息。NOT EXISTS
子查询会检查orders
表中是否存在与users
表中相同user_id
的记录,如果不存在则返回true
。
总结
在MySQL中,要查询不包含特定值的结果,可以使用NOT LIKE
、NOT IN
或NOT EXISTS
。这些关键字可以帮助我们更精准地筛选出需要的数据,提高查询效率。